Мне нужна помощь с загрузкой нескольких файлов с помощью Джерси. Я использовал следующий код для загрузки одного файла с помощью Jersey.
package my.first.rest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
@Path("uploadfile")
public class Upload {
String location;
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadfile(@FormDataParam("file") InputStream is, @FormDataParam("file") FormDataContentDisposition filedetail){
saveToDisk(is,filedetail);
return "File Uploaded Succesfully_"+location;
}
private void saveToDisk(InputStream is1,
FormDataContentDisposition filedetail) {
// TODO Auto-generated method stub
location = "E://upload/"+filedetail.getFileName();
try{
OutputStream out = new FileOutputStream(new File(location));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream (new File(location));
while((read = is1.read(bytes)) != -1){
out.write(bytes,0,read);
}
out.flush();
out.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
Приведенный выше код хорошо работает с загрузкой одного файла, но когда я добавляю атрибут multiple="multiple" к тегу input type = file, я могу выбрать несколько элементов в одной загрузке, он загружает первый выбранный элемент и имя последнего выбранного элемента. Я не ожидаю, что код будет работать, потому что он не предназначен для обработки нескольких загрузок файлов, но должен быть способ обойти это, верно?? Так как он берет один файл и имя другого.
Я просмотрел несколько потоков stackoverflow и много гуглил. Я бы не опубликовал это, если бы нашел ответ. Я не хочу загружать несколько файлов, используя приведенные ниже типы кода:
<input type ="file" name="file">
<input type ="file" name="file">
<input type ="file" name="file2">
Я не хочу загружать несколько файлов по отдельности. Я хочу иметь возможность выбирать несколько файлов одновременно, и все они будут загружены куда-нибудь. Мой тег такой:
<input type ="file" name="file" multiple="multiple">
Вот весь HTML-код.
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action ="http://localhost:8080/fuseframework/uploadfile/upload" method="post" enctype="multipart/form-data">
file:
<br>
<input type ="file" name="file" multiple="multiple">
<input type="submit" value="send">
</form>
</body>
</html>
Это банки, которые я использовал http://i.stack.imgur.com/1tVT8.png