Хранилище BLOB-объектов Azure - загрузка из Upload Control .NET - PullRequest
0 голосов
/ 13 октября 2018

У меня проблема с загрузкой файлов из веб-приложения в хранилище BLOB-объектов Azure.В режиме разработки все работает отлично, однако при публикации я не могу загрузить файлы.Как получить доступ к файлу для загрузки, пожалуйста?Ниже приведен код, который работает в разработке, но не в производстве:

Страница aspx:

 <asp:Panel runat="server" ID="PanelUpload">
     <div class="form-group">
         <input type="file" id="myfile" multiple="multiple" name="myfile" runat="server" />
     </div> <br />
     <asp:Button ID="Button_Upload" runat="server" Text="Upload New Images" OnClick="Click_UploadImages" CssClass="btn btn-primary mr-1 mb-1 w-100" />
                <br />
      <asp:Label ID="Span1" runat="server"></asp:Label>
  </asp:Panel>

Код сзади:

    protected void Click_UploadImages(object sender, EventArgs e)
    {
        HttpFileCollection uploadedFiles = Request.Files;
        CloudStorageAccount sa = CloudStorageAccount.Parse(connString);
        CloudBlobClient bc = sa.CreateCloudBlobClient();
        CloudBlobContainer container = bc.GetContainerReference(destContainer);
        container.CreateIfNotExists();

        for (int i = 0; i < uploadedFiles.Count; i++)
        {
            HttpPostedFile userPostedFile = uploadedFiles[i];
            try
            {
                if (userPostedFile.ContentLength > 0)
                {
                    CloudBlockBlob b = container.GetBlockBlobReference(product_id + "-" + i + Path.GetExtension(userPostedFile.FileName));
                    //b.UploadFromFile(userPostedFile.FileName);
                    using (var fs = File.Open(userPostedFile.FileName, FileMode.Open, FileAccess.Read, FileShare.None))
                    {
                        b.UploadFromStream(fs);
                    }

                    //Image Record to SQL After BLOB Upload
                    TraceBlobImageUsingSQL T = new TraceBlobImageUsingSQL();
                    T.ImageSQLEntry(product_id, i, "productimages", b.Name, userPostedFile.ContentLength, Path.GetExtension(userPostedFile.FileName), Context.User.Identity.GetUserId());
                }
            }
            catch (Exception Ex)
            {
                Span1.Text += "Error: <br>" + Ex.Message;
            }
        }
        RenderHTMLPanelData(Request.QueryString["ProductID"]);
    }

1 Ответ

0 голосов
/ 14 октября 2018

HttpPostedFile предоставляет свойство InputStream, которое позволяет читать содержимое непосредственно в виде потока.Используйте это вместо открытия файлового потока:

                using (var stream = userPostedFile.InpuStream)
                {
                    b.UploadFromStream(stream);
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...