繁体   English   中英

C#文件上传在本地工作; 不在Azure上

[英]C# File Upload works locally; not on Azure

我有一个C#Web应用程序,它将图像文件上传到Azure Blob存储。 我正在从文本框(没有文件上传控制器)传递图像文件的本地路径。 此应用程序可以在本地正常工作。 但是,当我在Azure上发布它时,它会引发异常。

找不到文件(文件名)

要在Azure上运行它应该进行哪些更改?

代码:

CloudBlobContainer container = Program.BlobUtilities.GetBlobClient.GetContainerReference(Container);// container 
            container.CreateIfNotExists();
            container.SetPermissions(new BlobContainerPermissions
            {
                PublicAccess = BlobContainerPublicAccessType.Blob
            });
            CloudBlobDirectory directory = container.GetDirectoryReference(foldername);
            // Get reference to blob (binary content)
            CloudBlockBlob blockBlob_image = directory.GetBlockBlobReference(imageid);
                 using (var filestream = System.IO.File.OpenRead(image_path))
                {
                    blockBlob_image.UploadFromStream(filestream);
                }

找不到文件(文件名)

Web应用程序发布到Azure时,此异常是由System.IO.File.OpenRead(filePath)引起的。 如果要使用System.IO.File.OpenRead(filePath),则需要确保可以在WebApp中找到文件路径。

要在Azure上运行它应该进行哪些更改?

如果要在Azure上使用代码,则需要确保可以在Azue网站中找到该文件。 您需要将文件复制到Azure。 如果要将文件上传到Azure blob,则不建议使用。 从那以后,您需要首先将文件复制到Azure WebApp。

另外,正如您提到的,您可以使用FileUpload Controller来做到这一点。

您可能正在使用通往计算机的路径,这在天蓝色时会有所不同。 您可以尝试将路径更改为以下内容:

string path = HostingEnvironment.ApplicationPhysicalPath + @"\YourProjectName\PathToFile"

确定,找到解决方案。 我没有使用文件路径到文本框,而是使用FileUpload Controller。 在后面的代码中

Stream image_path = FileUpload1.FileContent;

实际上,我也曾尝试过使用FileUpload控制器,但是Server.MapPath(FileUpload1.Filename)Path.GetFullPath(FileUpload1.FileName)没有提供正确的路径。

也,

           using (var filestream = image_path)
           {
        blockBlob_image.UploadFromStream(image_path);
           }

被替换为

blockBlob_image.UploadFromStream(image_path);

暂无
暂无

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

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