J'ai besoin d'aide pour télécharger plusieurs fichiers en utilisant Jersey. J'ai utilisé le code suivant pour télécharger un seul fichier en utilisant Jersey.Sélection de plusieurs fichiers et téléchargement à l'aide de 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();
}
}
}
Le code ci-dessus fonctionne bien avec le téléchargement d'un seul fichier, mais quand j'ajoute multiple = attribut « multiple » du type d'entrée = balise de fichier, je suis en mesure de sélectionner plusieurs éléments dans un seul téléchargement, il télécharge le premier élément sélectionné et le nom du dernier élément sélectionné. Je ne m'attends pas à ce que le code fonctionne, car il n'était pas destiné à gérer plusieurs téléchargements de fichiers, mais il doit y avoir un moyen de contourner le problème, n'est-ce pas? Depuis, il prend un fichier et le nom d'un autre.
J'ai regardé de multiples threads de stackoverflow et beaucoup de googled. Je n'aurais pas posté ceci si j'avais trouvé la réponse. Je ne cherche pas pour télécharger plusieurs fichiers en utilisant les types de code ci-dessous:
<input type ="file" name="file">
<input type ="file" name="file">
<input type ="file" name="file2">
Je ne veux pas de télécharger plusieurs fichiers individuellement. Je veux être en mesure de sélectionner plusieurs fichiers à la fois et tous d'être téléchargés quelque part. Mon tag est comme ceci:
<input type ="file" name="file" multiple="multiple">
Voici l'intégralité du code 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>
Ce sont les pots que j'ai utilisé http://i.stack.imgur.com/1tVT8.png
Un bon ......... –
Pour obtenir l'utilisation du contenu du fichier: InputStream is = bodyPart.getEntityAs (InputStream.class); – Gab
lorsque j'essaie de passer inputStream en tant qu'argument, j'obtiens une exception d'exécution, il est dit que "DataHead $ ReadMultiStream" n'est pas sérialisable. une idée? –