Java, Spring - upload kilku plików

0

Cześć,

Chciałbym zrobić upload kilku plików na raz w javie. Napisałem sobie taką oto metodę:

    @RequestMapping(value = RestURI.FILE_STORE, method = RequestMethod.POST, headers = ("content-type=multipart/*"))
    @ResponseStatus(HttpStatus.CREATED)
    public List<FileStoreDTO> uploadFile(@RequestParam("file") MultipartFile[] files) throws IOException {
        return fileStoreService.upload(files);
    }

ale wysyłając 1 czy też kilka plików zmienna files jest pusta. Zamiana MultipartFile[] na List<MultipartFile> również nie pomaga. Co ciekawe zmieniając typ po prostu na MultipartFile przychodzi już plik.
Proszę o pomoc w rozwiązaniu problemu

0

Jesteś pewien że chcesz wysyłać kilka plików na raz w jednym requescie. Ja mam to zrobione tak:

@CrossOrigin
	@RequestMapping(value="/test", method = RequestMethod.POST)
	public String uploadFileTest(@RequestParam("uploadedFile") MultipartFile uploadedFileRef) {
		String fileName = uploadedFileRef.getOriginalFilename();
		String path = "C:/uploads/" + fileName;
		byte[] buffer = new byte[1000];
		File outputFile = new File(path);
		int totalBytes = saveFileOnDisk(uploadedFileRef, buffer, outputFile);
		return "File uploaded successfully! Total Bytes Read=" + totalBytes;
	}
0

Tak - chciałbym wysłać kilka plików na raz. Czy jest to mało optymalne rozwiązanie niż stukanie z pojedynczym plikiem?
Nie chciałbym też encodować pliku do base64 i wysyłać go w jsonie, ponieważ potrzebuje zapisać na bazie danych min. nazwę pliku.

0

a nie lepiej mieć metodę dla pojedynczego pliku i potem wielokrotnie ją wołać?

0

Miałem ten sam problem..
Rozwiązaniem było dodanie magicznych [], więc u Ciebie będzie to wyglądało tak: @RequestParam("file[]") MultipartFile[] files

Oczywiście tam gdzie wysyłasz z widoku też musisz te nawiasy dodać..

Przykładzik z angulara:

var formData = new FormData();
angular.forEach($scope.file, function (iter) {
                    formData.append("file[]", iter);
                });
 $http.post("/twoj/url", formData);

Każdy pliczek z multiple upload przypisuję do file[] i to postuję, odbieram poprzez requestParam "file[]"

1 użytkowników online, w tym zalogowanych: 0, gości: 1