繁体   English   中英

WCF在Azure本地存储帐户中上传Blob

[英]WCF Upload Blob in Azure Local Storage Account

我目前正在使用C#和Azure存储来开发WCF Rest Web服务,我需要在本地存储帐户中上传文件。 目前,我已经可以在特定的容器中上载特定的文件,但是,我需要能够选择计算机中的任何文件并将其上载到我选择的容器中。

这里是服务中的上传代码:

[WebInvoke(Method = "GET", UriTemplate = "UploadBlob", ResponseFormat = WebMessageFormat.Json)]
public void UploadBlob()
{
    // Connect to the storage account's blob endpoint 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("BlobConnectionString"));
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    // Create the blob storage container 
    CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
    container.CreateIfNotExists();

    // Create the blob in the container 
    CloudBlockBlob blob = container.GetBlockBlobReference("nature");

    using (var fileStream = System.IO.File.OpenRead(@"C:\Image\nature.jpg"))
    {
        blob.UploadFromStream(fileStream);
    }
}

在这里,我正在“ mycontainer”容器中上传“ nature.jpg”文件。 在我的Web表单中,单击按钮后,我正在使用以下代码来调用该方法:

protected void Button1_Click(object sender, EventArgs e)
{
    BlobService upload = new BlobService();
    upload.UploadBlob();
}

这是带有我的按钮和文件上传输入的设计代码:

 <asp:FileUpload ID="FileUpload" runat="server" /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Upload" /> 

当我单击此按钮时,nature.jpg被上传。 我需要的是能够在计算机上选择一个文件并将其上传到我选择的容器中。

在按钮单击事件中,您可以访问在FileUpload控件中选择的图像:

protected void Button1_Click(object sender, EventArgs e)
{
    FileUpload.//Get you image and check if it is correct

    BlobService upload = new BlobService();
    upload.UploadBlob(<<give the image filestream to your upload server>>);
}

您的UploadBlob应该具有流作为输入(文件图像)。

在按钮单击事件中,您需要创建流,然后将其上传到WCF服务。

protected void Button1_Click(object sender, EventArgs e)
{
    BlobService upload = new BlobService();

    System.IO.FileStream streamToUpload = new System.IO.FileStream(FileUpload.PostedFile.FileName, 
               System.IO.FileMode.Open, System.IO.FileAccess.Read)
    upload.UploadBlob(streamToUpload );
}

UploadBlob服务方法的代码应如下所示:

[WebInvoke(Method = "GET", UriTemplate = "UploadBlob", ResponseFormat = WebMessageFormat.Json)]

public void UploadBlob(Stream fileStream)
{
    // Connect to the storage account's blob endpoint 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("BlobConnectionString"));
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    // Create the blob storage container 
    CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
    container.CreateIfNotExists();

    // Create the blob in the container 
    CloudBlockBlob blob = container.GetBlockBlobReference("nature");
    blob.UploadFromStream(fileStream);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM