Проблема с кодом, который я использую, заключается в том, что файл появляется в блобе, но в виде файла размера 0B. Как будто никакие данные не были записаны в blob.Как загрузить изображение в blob в Azure?
Это форма я использую в моем 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>
И у меня есть следующий код в моем сервлета:
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) {
}
Это должно работать, насколько вы, ребята, отклоняетесь от стандартного учебника? –
Я думаю, что ответ @Frans - хороший улов. Ваш входной поток 'is' не расположен в начале потока. В C# синтаксис будет выглядеть следующим образом: 'is.Seek (0, SeekOrigin.Begin); // Поместите поток в начале ', непосредственно перед строкой' blob.upload() '. –