Проблема получения моих документов из хранилища - hibernate, springboot, java, sql application - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть Java-приложение, которое позволяет пользователям загружать документы. Загруженные документы сохраняются в сети в определенной папке «клиентские файлы» и регистрируются в базе данных SQL в таблице хранения документов. Добавление к ним конкретного файла в сети работает точно, но когда я нажимаю, чтобы загрузить (он же просмотр) файл из приложения в браузере, он возвращает ошибку 404. URL-адрес является точным, и я не уверен, с чего начать с устранения проблемы. Любая идея, что я должен смотреть на то, почему это не работает? Ясно, что пути настроены правильно, так как я могу загрузить из приложения в файл хранилища. Просто не уверен, что мешает отправить его обратно. Это может быть что-то на стороне сервера?

Кроме того, не уверен, какой код вам нужно знать, чтобы посмотреть на это. Это кнопка загрузки ....

<td>
    <span>
     <span th:text="${doc.storage}"></span>
     <a th:href="@{|/client-files/${client.principleName+' '+client.id+'/'+doc.storage}|}"><i class="fa fa-download"/></a>
    </span>
</td>

Не похоже, что в базе кода есть контроллер для просмотра. Похоже, что он просто добавляет ссылку и должен получить доступ к папке / файлам по ссылке?

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/client-files/**").addResourceLocations("file:client-files/");
        registry.addResourceHandler("/client-files/**").addResourceLocations("file:carrier-files/");
}

@Controller
public class DocumentsController {
    @Autowired
    ClientRepository clientRepository;
    @Autowired
    LicenseRepository licenseRepository;
    @Autowired
    DocumentRepository documentRepository;
    @Autowired
    StorageService storageService;
    @Autowired
    DocumentService documentService;
    @Autowired
    InsuranceRepository insuranceRepository;
    @Autowired
    CarrierAppointmentRepository carrierAppointmentRepository;

    @Autowired
    RoleRepository roleRepository;

    @RequestMapping(value="/documents/client/{id}")
    public String manageDocuments(Model model, @PathVariable("id") Client client){
        Document newDocument=new Document();
        License newLicense=new License();
        Insurance newInsurance=new Insurance();

        model.addAttribute("insurances",insuranceRepository.findByClient(client));
        model.addAttribute("newDocument",newDocument);
        model.addAttribute("newLicense",newLicense);
        model.addAttribute("newInsurance",newInsurance);
        model.addAttribute("licenses",licenseRepository.findByClient(client));
        model.addAttribute("docs",documentRepository.findByClient(client));
        model.addAttribute("client",client);

        return "documents";
    }

    @RequestMapping(value="/save/document")
    public String addDoc(Model model, @ModelAttribute(value="newDocument") Document newDocument, @RequestParam("document") MultipartFile file){
        Document doc=documentRepository.save(newDocument);
        doc.setStorage(storageService.store(file,newDocument.getClient()));
        documentRepository.save(doc);
        documentService.markDocuments(newDocument.getClient(),newDocument.getType());

        return  "redirect:/documents/client/"+newDocument.getClient().getId();
    }

    @RequestMapping(value="/delete/doc/{id}")
    public String deleteDoc(Model model, @PathVariable("id") Document doc, HttpServletResponse response) throws IOException {
        if (doc.getClient()!=null) {
            String type = doc.getType();
            storageService.delete(doc.getStorage(),doc.getClient());
            documentRepository.delete(doc);
            documentService.markDocuments(doc.getClient(), type);
            return "redirect:/documents/client/" + doc.getClient().getId();
        }else{
            String username= SecurityContextHolder.getContext().getAuthentication().getName();
            Role role=roleRepository.findByUsernameContainingIgnoreCaseAndActive(username,true);
            if (!role.getIsCarrierAdmin()){
                return "redirect:/accessDenied";
            }

            storageService.delete(doc.getStorage(),doc.getCarrierAppointment());
            documentRepository.delete(doc);
            return "redirect:/carrierAppointment/details/" + doc.getCarrierAppointment().getId();
        }
    }

    @RequestMapping(value="/save/insurance")
    public String addInsuranceDoc(@ModelAttribute(value="newInsurance")Insurance newInsurance,@RequestParam("insurance-file") MultipartFile file){
        Insurance insurance = insuranceRepository.save(newInsurance);
        insurance.setProof(storageService.store(file,newInsurance.getClient()));
        insuranceRepository.save(insurance);
        documentService.markInsurance(newInsurance.getClient());
        return  "redirect:/documents/client/"+newInsurance.getClient().getId();
    }


    @RequestMapping(value="/delete/insurance/{id}")
    public String deleteInsurance(Model model,@PathVariable("id")Insurance insurance){
        storageService.delete(insurance.getProof(),insurance.getClient());
        documentService.markInsurance(insurance.getClient());
        insuranceRepository.delete(insurance);
        return "redirect:/documents/client/"+insurance.getClient().getId();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...