2016-12-11 72 views
0

我有以下ASPX標記:上傳Base64的圖片天青一滴

<asp:Image ImageUrl="placeholder.png" runat="server" ID="plhdr" /> 

該網頁允許用戶上載的圖像,這是通過一個JavaScript庫處理,然後設置作爲上述控制的源。 JavaScript的設定源爲Base64字符串是這樣的:

數據:圖像/ JPEG; BASE64,/ 9J/4AAQ ...

我有一個,就是在同一頁上的功能將顯示的圖像上載到Azure存儲,然後在Azure SQL中添加對其的引用。我在後面的代碼的代碼是:在「/」應用

StorageCredentials creden = new StorageCredentials(accountname, accesskey); 
    CloudStorageAccount acc = new CloudStorageAccount(creden, useHttps: true); 
    CloudBlobClient client = acc.CreateCloudBlobClient(); 
    CloudBlobContainer cont = client.GetContainerReference("testcont"); 
    cont.CreateIfNotExists(); 
    cont.SetPermissions(new BlobContainerPermissions 
    { 
     PublicAccess = BlobContainerPublicAccessType.Blob 
    }); 
    CloudBlockBlob cblob = cont.GetBlockBlobReference("cblob"); 

    var imagesrc = plhdr.ImageUrl; 

    cblob.UploadFromFile(@imagesrc); 

    var imageUrl = cblob.Uri; 

服務器錯誤。找不到路徑 'D:\ Windows \ system32 \ placeholder.png'的一部分。異常詳細信息: System.IO.DirectoryNotFoundException:找不到 路徑'D:\ Windows \ system32 \ dist \ img \ fling \ space.gif'的一部分。

在這一行:cblob.UploadFromFile(@imagesrc);

希望有人能指出我正確的方向。

+0

如何將圖像內容傳遞到您的服務器端代碼? –

+0

@GauravMantri對不起,我該怎麼做? – ReignOfComputer

+0

我沒有用過這個年齡段,但應該有一些控制,應該上傳文件到服務器。看到這個例子:http://geekswithblogs.net/dotNETvinz/archive/2011/01/20/uploading-image-to-a-folder-and-display-the-image-after.aspx。 –

回答

1

根據您的描述,我們可以使用UploadFromStream(stream)將圖像文件上傳到azure存儲,請嘗試使用以下示例代碼。這個對我有用。

CloudBlockBlob cblob = cont.GetBlockBlobReference("testblob"); 
    var bytes = Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==");// without data:image/jpeg;base64 prefix, just base64 string 
    using (var stream = new MemoryStream(bytes)) 
    { 
    cblob.UploadFromStream(stream); 
    } 
+0

這解決了它 - 謝謝。我還必須推遲該方法,因爲它在元素被JavaScript更新之前觸發。 – ReignOfComputer