【发布时间】:2019-12-29 22:58:49
【问题描述】:
我正在尝试将文件上传到 Azure Blob。 我正在尝试通过 vaadin 框架中的 Upload 来实现。 Vaadin 版本:6.7.8
我能够开发用于将文件上传到 azure blob 的代码。
我的问题陈述如下:
- 我编写了一个类 UploadToBlob.java 来将文件上传到 azure blob。
- 如果我单独运行 UploadToBlob.java 类(从 eclipse 作为 java 应用程序运行),我可以将文件上传到 azure blob。
- 如果我在另一个类 [ModifyComplaintComponent.java] 中创建 UploadToBlob 类的对象,
storageAccount = CloudStorageAccount.parse(storageConnectionString);不会被执行。
下面是 UploadToBlob.java 代码:
package com.---.trs.scms.ui.components;
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.StorageCredentials;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
public class UploadToBlob {
public static void main(String[] args) {
try {
final String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=abcd;AccountKey=bmiA7+****==;EndpointSuffix=core.windows.net";
System.out.println("---I am getting called Main-1 ");
CloudStorageAccount storageAccount;
storageAccount = CloudStorageAccount.parse(storageConnectionString);
com.microsoft.azure.storage.blob.CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
CloudBlobContainer container = blobClient.getContainerReference("container2");
container.createIfNotExists();
String filePath = "C:\\Users\\----\\Desktop\\Timesheet - 19th Aug,2019.pdf";
com.microsoft.azure.storage.blob.CloudBlockBlob blob = container.getBlockBlobReference("Timesheet.pdf");
java.io.File source = new java.io.File(filePath);
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(source);
blob.upload(fileInputStream, source.length());
} catch (Exception e) {
e.printStackTrace();
}
}
}
现在,我正在传递上面的手动文件 PATH 以在 azure blob 中上传,正如我上面所说的,这个类被调用直到代码行 System.out.println("---I am getting called Main-1 ");
这是我调用 UploadToBlob.java 的 ModifyComplaintComponent 代码:
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Upload;
public class ModifyComplaintComponent extends CustomComponent {
//other component code which I haven't pasted here
private Upload uploadnew;
try {
System.out.println("------Inside try block-----------");
UploadToBlob fileReceiver= new UploadToBlob ();
uploadnew = new Upload("Upload a file", fileReceiver);
uploadnew.setReceiver(fileReceiver);
uploadnew.addListener(fileReceiver);
System.out.println("------end of try block-----------");
} catch (Exception e) {
System.out.println("------catch block-----------");
e.printStackTrace();
}
HorizontalLayout hlayout = new HorizontalLayout();
hlayout.setSpacing(true);
hlayout.addComponent(uploadnew);
}
我在 UploadToBlob 代码中提供手动文件路径的原因是因为我首先想从 ModifyComplaintComponent 类调用此代码。
其次,当我尝试浏览文件时,文件被选中,但是当我点击上传时,我在 Vaadin Upload UI Part 上得到 NullPointerException,即使我选择了文件,UI 也会显示“未选择文件”
我面临的挑战是,如果我单独运行 Upload.java 文件,我可以将静态文件上传到 azure blob 中,但我想浏览 vaadin 框架中的文件并将其上传到 azure blob 存储中。
【问题讨论】:
标签: java azure vaadin azure-storage azure-blob-storage