J'essaie de créer une servlet de téléchargement qui gère enctype = "multipart/form-data" à partir d'un formulaire. Le fichier que j'essaie de télécharger est un zip. Cependant, je peux télécharger et lire le fichier sur localhost, mais quand je télécharge sur le serveur, j'obtiens une erreur "Fichier non trouvé" quand je veux télécharger un fichier. Est-ce dû au cadre Struts que j'utilise? Merci de votre aide. Voici une partie de mon code, j'utilise FileUpload de http://commons.apache.org/fileupload/using.htmlProblème FileUpload avec Struts sur le serveur
J'ai changé pour utiliser ZipInputStream, cependant, comment faire référence au zip ZipFile sans utiliser une adresse de disque local (ie: C: //zipfile.zip). zip est nul car il n'est pas instancié. Je devrai décompresser et lire le zipentry en mémoire, sans écrire au serveur.
Pour la servlet de téléchargement: > zip ZipFile privé; lecteur CSVReader privé; boolean isMultipart = ServletFileUpload.isMultipartContent (requête); if (isMultipart) { DiskFileItemFactory usine = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List <FileItem> items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
//Iterating through the uploaded zip file and reading the content
FileItem item = (FileItem) iter.next();
ZipInputStream input = new ZipInputStream(item.getInputStream());
ZipEntry entry = null;
while ((entry= input.getNextEntry()) != null) {
ZipEntry entry = (ZipEntry) e.nextElement();
if(entry.getName().toString().equals("file.csv")){
//unzip(entry)
}
}
}
public static void unzip(ZipEntry entry){
try{
InputStream inputStream = **zip**.getInputStream(entry);
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
reader = new CSVReader(inputStreamReader);
}
catch(Exception e){
e.printStackTrace();
}
}
<
merci pour votre réponse, mais je suis bloqué à référencer le zip ZipFile. Je ne peux pas le faire fonctionner sans référencer le fichier réel, ce qui ne fonctionnera pas sur le serveur réel. J'ai modifié les codes ci-dessus. – JustToHelp
Ecrivez-le sur le disque, puis référencez 'File' comme' ZipFile'. – BalusC
voulez-vous dire ZipFile zip = (ZipFile) item.write (file)? Ce fichier fera référence à où? – JustToHelp