Upload de fichier via Requête HTTP PUT
Quelqu'un a une idée des produits ou des bibliothèques comme Apache Commons FileUpload qui traitera de METTRE les uploads de fichier?
Toute amicale des conseils ou une orientation serait très apprécié!
Histoire Complète:
Nous avons commencé à mettre en œuvre un upload de fichier reste(comme le service pour nos java webapp, mais il n'a pas l'air d'être "facile" des solutions pour l'upload de fichiers via la méthode HTTP PUT.
Nous espérons trouver une bibliothèque comme la Apache Commons FileUpload projet, mais quelque chose qui n'est pas seulement affaire avec "Téléchargement de Fichier de Formulaire en HTML" et/ou "multipart/form-data".
Nous aimons vraiment FileUpload capacité à stocker temporairement des fichiers, déplacer ces fichiers lorsque demandé, puis nettoyer les fichiers temporaires après ils ne sont plus utilisés. Nous aimons aussi le fait que le Printemps sera automajically lier la MultipartFile Liste de notre objet de commande et son juste disponible pour nous à utiliser lorsqu'il pénètre dans notre autre formulaire html téléchargement de fichier de contrôleurs.
De La Pile De Fond:
- Spring MVC (3.2.3.De presse)
- Tomcat 7
- Nous essayons de suivre une architecture en couches (de l'INTERFACE utilisateur, des services d'affaires/de la logique, de la persistance)
Merci pour votre temps!
L'url suivante est un exemple qui montre la possibilité de télécharger un fichier à partir de la demande de InputStream. Le code du travail à faire, mais il n'est pas tout à fait la qualité de la production.
Nous sommes à l'aide de la commande curl suivante pour tester notre webservice:
curl -v -k -X PUT --data-binary @"c:/java/files/tempfilename.txt" https://localhost:8443/api/file/tempfilename.txt
xwoker ensuite donné la suite de nice curl exemple:
curl -v -X PUT -T "myfile" http://localhost:8080/mytargetfilename
Ne devriez-vous pas utiliser la variable de chemin d'accès de nom de fichier quelque part?
oui, nous devrions utiliser le nom de fichier quelque part, mais ce n'est pas tout à fait le point de mon post. Je vais essayer de mettre à jour mes question avec un code meilleur exemple en expliquant les raisons de simplicité, nous essayons de réaliser.
OriginalL'auteur hooknc | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
Il est assez facile d'obtenir de printemps à répondre correctement à un Fichier de Téléchargement à la demande pour une Méthode HTTP PUT.
Tout ce qu'il faut supplante l' isMultipart() méthode personnalisée MultipartResolver classe.
Ce qui est vraiment important, c'est que la valeur par défaut MultipartResolver est élargie de manière à ce que le isMultipart() méthode renvoie true, soit une requête POST ou PUT.
En général, il y a deux défaut MultipartResolver implémentations: CommonsMultipartResolver (utilisé avec Apache Commons FileUpload) et StandardServletMultipartResolver (utilisé avec Servlet 3.0+ une Partie de l'API).
Puisque nous sommes à l'aide de Apache Commons FileUpload nous avons étendu le CommonsMultipartResolver classe.
Il y a de la documentation sur le MultipartResolver de la Javadoc page qui explique comment bien définir une mesure MultipartResolver pour votre application (l'emphase est mienne):
Pour un xml configuré l'application, il va regarder de près le suivant:
Pour une annotation configuré l'application, il va regarder de près le suivant:
Plus d'informations sur l'Annotation de configuration de MultipartResolver.
OriginalL'auteur hooknc
Je ne suis pas au courant de toutes les bibliothèques qui répondent à vos exigences. Mais si vous n'avez pas l'esprit à faire peu de codage, je pense que la bonne façon de créer quelque chose de similaire serait d'écrire votre propre
qui convertit le corps de la requête vers un Fichier dans le répertoire tmp:
Dans le contrôleur, vous devrez définir votre méthode avec:
N'oubliez pas d'enregistrer votre FileMessageConverter, par exemple
La commande curl pour appeler de l'upload:
Je ne pense pas que vous pouvez garantir un début de nettoyage. Mais vous aimeriez peut-être avoir un coup d'oeil comment Apache Axis mis en œuvre leurs TempFileManager. Ou même l'utiliser à la place du Fichier.createTempFile svn.apache.org/repos/asf/axis/axis2/java/core/trunk/modules/...
OriginalL'auteur xwoker