C# 将文件上载到azure blob存储,然后发送带有files base64字符串的http响应不';行不通

C# 将文件上载到azure blob存储,然后发送带有files base64字符串的http响应不';行不通,c#,.net,azure,azure-storage-blobs,C#,.net,Azure,Azure Storage Blobs,我正在尝试使用azures blob存储实现以下目标 将文件上载到azure blob存储 然后发送一个包含文件base64字符串的http响应 奇怪的是,我只能让其中一个工作,因为它会导致另一个停止工作,具体取决于代码的顺序 HttpPostedFile image = Request.Files["froalaImage"]; if (image != null) { string fileName = RandomSt

我正在尝试使用azures blob存储实现以下目标

  • 将文件上载到azure blob存储
  • 然后发送一个包含文件base64字符串的http响应 奇怪的是,我只能让其中一个工作,因为它会导致另一个停止工作,具体取决于代码的顺序

            HttpPostedFile image = Request.Files["froalaImage"];
            if (image != null)
            {
                string fileName = RandomString() + System.IO.Path.GetExtension(image.FileName);
                string companyID = Request.Form["companyID"].ToLower();
    
                // Retrieve storage account from connection string.
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                    CloudConfigurationManager.GetSetting("StorageConnectionString"));
    
                // Create the blob client.
                CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
                // Retrieve reference to a previously created container.
                CloudBlobContainer container = blobClient.GetContainerReference(companyID);
    
                // Create the container if it doesn't already exist.
                container.CreateIfNotExists();
    
                // Retrieve reference to a blob named "filename".
                CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
    
                // Create or overwrite the blob with contents from a local file.
                using (image.InputStream)
                {
                    blockBlob.UploadFromStream(image.InputStream);
                    byte[] fileData = null;
                    using (var binaryReader = new BinaryReader(image.InputStream))
                    {
                        fileData = binaryReader.ReadBytes(image.ContentLength);
                    }
                    string base64ImageRepresentation = Convert.ToBase64String(fileData);                   
    
                    // Clear and send the response back to the browser.
                    string json = "";
                    Hashtable resp = new Hashtable();
                    resp.Add("link", "data:image/" + System.IO.Path.GetExtension(image.FileName).Replace(@".", "") + ";base64," + base64ImageRepresentation);
                    resp.Add("imgID", "BLOB/" + fileName);
                    json = JsonConvert.SerializeObject(resp);
                    Response.Clear();
                    Response.ContentType = "application/json; charset=utf-8";
                    Response.Write(json);
                    Response.End();
                }
            }
    
    上面的代码将文件上载到azure的blob存储,但是base64字符串将为空

    但是如果我把行
    blockBlob.UploadFromStream(image.InputStream)行下方
    string base64ImageRepresentation=Convert.ToBase64String(fileData)


    我将获得base64字符串没有问题,但是文件未正确上载到azure的blob存储。

    第一次使用后,您是否需要重置流位置

    image.InputStream.Seek(0, SeekOrigin.Begin);