Je suis l'exemple fourni sur le site de téléchargement de fichiers communs sur l'API de streaming. Je suis coincé essayant de comprendre comment obtenir l'extension de fichier du fichier téléchargé, comment écrire le fichier dans un répertoire et le pire est où la personne qui a écrit l'exemple commente // Process the input stream...
Il me laisse me demander si c'est quelque chose d'aussi trivial que Je suis le seul qui ne sait pas comment.Comment télécharger un fichier en utilisant le téléchargement de fichiers communs streaming streaming api
Répondre
Utilisez dans votre fichier HTML:
<form action="UploadController" enctype="multipart/form-data" method="post">
<input type="file">
</form>
et dans le servlet UploadController
, dans la méthode doPost
:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next();
if (!item.isFormField()) {
String fileName = item.getName();
String root = getServletContext().getRealPath("/");
File path = new File(root + "/uploads");
if (!path.exists()) {
boolean status = path.mkdirs();
}
File uploadedFile = new File(path + "/" + fileName);
System.out.println(uploadedFile.getAbsolutePath());
item.write(uploadedFile);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
'boolean isMultipart = ServletFileUpload.isMultipartContent (requête); ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iter = upload.getItemIterator (requête); While (iter.hasNext()) { FileItemStream item = iter.next(); Nom de la chaîne = item.getFieldName(); Flux InputStream = item.openStream(); si (item.isFormField()) { } else {// traiter le flux d'entrée ... }} ' – qualebs
désolé pour le formatage du code pauvres. Je suis sur un appareil mobile. Maintenant, comment traitez-vous le flux de l'extrait ci-dessus? – qualebs
Etes-vous sûr d'utiliser l'API de diffusion de fichiers 'FileItem item = (FileItem) iterator.next();'? Je pense qu'il devrait être 'FileItemStream item = iterator.next();' de sorte que vous puissiez utiliser le streaming. – Don
Voici une Servlet qui fait ce que vous voulez qu'il fasse.
package rick;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.util.*;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.annotation.WebServlet;
@WebServlet("/upload4")
public class UploadServlet4 extends HttpServlet{
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.print("Request content length is " + request.getContentLength() + "<br/>");
out.print("Request content type is " + request.getHeader("Content-Type") + "<br/>");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
ServletFileUpload upload = new ServletFileUpload();
try{
FileItemIterator iter = upload.getItemIterator(request);
FileItemStream item = null;
String name = "";
InputStream stream = null;
while (iter.hasNext()){
item = iter.next();
name = item.getFieldName();
stream = item.openStream();
if(item.isFormField()){out.write("Form field " + name + ": "
+ Streams.asString(stream) + "<br/>");}
else {
name = item.getName();
System.out.println("name==" + name);
if(name != null && !"".equals(name)){
String fileName = new File(item.getName()).getName();
out.write("Client file: " + item.getName() + " <br/>with file name "
+ fileName + " was uploaded.<br/>");
File file = new File(getServletContext().getRealPath("/" + fileName));
FileOutputStream fos = new FileOutputStream(file);
long fileSize = Streams.copy(stream, fos, true);
out.write("Size was " + fileSize + " bytes <br/>");
out.write("File Path is " + file.getPath() + "<br/>");
}
}
}
} catch(FileUploadException fue) {out.write("fue!!!!!!!!!");}
}
}
}
Il y a une 'bibliothèque' fantastique pour le faire pour vous. C'est en fait juste un échantillon de code d'un filtre qui interceptera tous les messages de formulaire de type multipart et vous donnera accès au fichier, au nom de fichier etc ... que vous pouvez gérer dans votre méthode de poste de servlet normale.
Le problème avec toutes ces réponses est qu'il ne répond pas à la question initiale !! Comme il est dit "traiter le flux d'entrée", cela vous rend vraiment confus. Je regardais cette question toute la nuit dernière essayant de trouver un indice à partir de l'une des réponses, mais rien. Je suis allé et essayé d'autres sites, et rien. En fait, ce que nous faisons est en dehors de la portée de File Upload, et c'est le problème.
Nous travaillons maintenant avec Java.IO InputStream
InputStream stream = item.openStream();
maintenant nous travaillons avec ce "cours d'eau".
Ici vous pouvez trouver toutes sortes de réponses à ce que vous avez besoin. C'est assez bête que ce soit si vague, et donne l'impression que vous devez faire quelque chose de plus avec Commons, mais en réalité ce n'est pas CommonsStream c'est Java.io!
Dans notre cas, nous prenons le courant nous donne et télécharger un nouveau fichier en lisant les données octet
Ce site a aussi un tas d'options qui pourraient être utiles http://www.jedi.be/blog/2009/04/10/java-servlets-and-large-large-file-uploads-enter-apache-fileupload/
J'espère que cela aide les autres qui sont confus et nouveau à FileUploading, parce que je viens de comprendre cela quelques minutes avant d'écrire cette réponse.
Voici mon code qui enregistre un fichier sur le lecteur racine.
try {
System.out.println("sdfk");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload();
// Parse the request
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext())
{
FileItemStream item = iter.next();
String name = item.getFieldName();
InputStream stream = item.openStream();
System.out.println("File field " + name + " with file name "
+ item.getName() + " detected.");
// Process the input stream
File f = new File("/"+item.getName());
System.out.println(f.getAbsolutePath());
FileOutputStream fout= new FileOutputStream(f);
BufferedOutputStream bout= new BufferedOutputStream (fout);
BufferedInputStream bin= new BufferedInputStream(stream);
int byte_;
while ((byte_=bin.read()) != -1)
{
bout.write(byte_);
}
bout.close();
bin.close();
}
}
catch (FileUploadException ex)
{
Logger.getLogger(UploadServlet.class.getName()).log(Level.SEVERE, null, ex);
}
response.sendRedirect("/plans.jsp");
Bonne chance!
J'ai donné ici http://www.javamonamour.org/2015/10/web-application-for-file-upload-with.html un exemple de travail complet (un projet Eclipse pour WebLogic, mais vous pouvez facilement l'adapter à Tomcat).
Autrement, juste le clone git https://github.com/vernetto/WebFileUploaderStreaming. Un exemple de travail complet vaut mieux qu'un millier de fragments de code.
- 1. Android streaming streaming/incrémental question de téléchargement
- 2. Ruby Sinatra application pour le téléchargement d'un fichier (en streaming)
- 3. streaming fichiers journaux en utilisant apache storm
- 4. Comment télécharger un fichier avec PHP, curl et HTTP POST en streaming le fichier?
- 5. Télécharger le protocole RTSP en streaming
- 6. Asp.net Web Api Streaming
- 7. données en streaming fichiers texte
- 8. Streaming API vs Rest API?
- 9. Fichiers de streaming WCF
- 10. noeud js téléchargement de fichier et de streaming des données
- 11. Streaming sécurisé de fichiers flv
- 12. Comment utiliser le streaming de fichiers SQL API Win32 et la prise en charge du streaming WCF
- 13. Est-il possible de télécharger un fichier du client Silverlight sur le serveur en utilisant le streaming WCF?
- 14. Comment consommer Twitter Streaming API en utilisant Heroku et MongoLab?
- 15. Twitter Streaming API
- 16. Streaming Insert API throttling
- 17. Télécharger le fichier cause problème pour le streaming dans ios
- 18. accéder à Twitter streaming api en utilisant le nœud js
- 19. Aide requis: fichiers zip en streaming
- 20. Streaming sécurisé dans le streaming multimédia wowza
- 21. force.com API streaming
- 22. Comment arrêter le téléchargement d'un fichier mp3 par flash en mode streaming?
- 23. Téléchargement progressif du fichier MP3 (streaming et téléchargement) - IPhone SDK
- 24. écrire un client de streaming de fichiers pour WCF
- 25. page de téléchargement interuptant flash streaming en safari
- 26. Streaming Avi fichiers de C# en utilisant RTP
- 27. Silverlight streaming upload
- 28. JCR éviter le streaming de fichiers
- 29. En utilisant grok dans le streaming Flink
- 30. Streaming RTMP en utilisant ffserver
Il y a énormément d'informations sur la façon de procéder ici: [link] (http://commons.apache.org/proper/commons-fileupload/using.html). – Sticks