私が使用するコードの問題は、ファイルが blob に表示されますが、0B サイズのファイルとして表示されることです。blob にデータが書き込まれていないかのように。
これは、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) {
}