Le problème avec le code que j'utilise est que le fichier apparaît dans le blob, mais en tant que fichier de taille 0B. Comme si aucune donnée n'était écrite dans le blob.Comment télécharger une image dans un blob dans Azure?
Ceci est la forme que je l'utilise dans mon JSP:
<form method="POST" action="UploadServlet" enctype="multipart/form-data" >
<input type="file" name="file" id="file" /> <br/>
</br>
<input type="submit" value="Upload" name="upload" id="upload" />
</form>
Et je le code suivant dans mon servlet:
try {
CloudStorageAccount account;
CloudBlobClient serviceClient;
CloudBlobContainer container;
CloudBlockBlob blob;
account = CloudStorageAccount.parse(storageConnectionString);
serviceClient = account.createCloudBlobClient();
container = serviceClient.getContainerReference("gettingstarted");
container.createIfNotExist();
// Set anonymous access on the container.
BlobContainerPermissions containerPermissions;
containerPermissions = new BlobContainerPermissions();
containerPermissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER);
container.uploadPermissions(containerPermissions);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//process only if its multipart content
InputStream is = null;
if (ServletFileUpload.isMultipartContent(request)) {
List items = fileUpload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
is = item.getInputStream();
String name = new File(item.getName()).getName();
System.out.println(name);
blob = container.getBlockBlobReference(name);
File fileReference = new File(item.getName());
System.out.println(is);
blob.upload(is, fileReference.length());
}
}
}
is.close();
request.getRequestDispatcher("hello").forward(request, response);
} catch (Exeption e) {
}
cela devrait fonctionner, combien les gars dévier du tutoriel standard? –
Je pense que la réponse par @Frans est une bonne prise. Votre flux d'entrée 'is' n'est pas positionné au début du flux. En C#, la syntaxe serait: 'is.Seek (0, SeekOrigin.Begin); // Positionne le flux au début, juste avant la ligne 'blob.upload()'. –