将图像文件上传到服务器 asp.net

Posted

技术标签:

【中文标题】将图像文件上传到服务器 asp.net【英文标题】:Uploading image file to server asp.net 【发布时间】:2016-06-06 14:37:37 【问题描述】:

我有一个 asp.net 项目,我正在将选定的图像保存到 NewUrunler1 文件,并将图像的路径保存在我的数据库中。在本地,它可以正常工作,但是由于我将项目移动到了我的 Godaddy 主机,因此保存方法会出错。这是我保存图像的代码:

protected void UploadImage()
    
        try
        
            HttpPostedFile yuklenecekDosya = FileUploadImage.PostedFile;
            if (yuklenecekDosya != null)
            
                FileInfo dosyaBilgisi = new FileInfo(yuklenecekDosya.FileName);
                string yuklemeYeri = Server.MapPath("~/Images/NewUrunler1/" + dosyaBilgisi);
                FileUploadImage.SaveAs(Path.Combine(yuklemeYeri));
            
        
        catch (Exception e)
        
            failDiv.Visible = true;
            lblHata.Text = e.ToString();
        
    

当我运行它时,我从 try catch 中得到一个错误。这是错误:

System.UnauthorizedAccessException: Access to the path 'G:\PleskVhosts\ada-crm.com\httpdocs\Images\NewUrunler1\deneme.png' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode) at System.Web.HttpPostedFile.SaveAs(String filename) at CRM.UrunEkle.UploadImage()

我是 asp.net 的新手,很抱歉,如果这是一个简单的问题,但我在网上搜索并无法解决。感谢您的宝贵时间。

【问题讨论】:

该错误表明您无权访问您尝试在服务器上保存文件的文件夹。此文件夹与您的网站位于同一文件夹中吗?如果没有,请尝试将保存路径移到那里,看看是否有帮助。 从错误消息中,您只需要授予完全权限。您可以通过他们的控制面板执行此操作,或要求他们为您提供完全许可 【参考方案1】:

我不确定 GoDaddy,但在典型的 IIS 托管环境中,您需要确保您尝试上传到的文件夹已为与网站的 ApplicationPool 关联的用户应用了写入权限。

另外,请先确保路径存在。为此,您可以检查文件夹是否存在,如果不存在则创建它们。

【讨论】:

【参考方案2】:

这与 ASP.NET 无关,与基本的 Windows 安全性无关。有人将您的网站设置为在无权写入网站的用户下运行。

从安全的角度来看,这很有意义。现在致电您的主机支持并询问他们 - 如何更改此设置,以便运行网站进程的用户可以读取/写入文件夹;)

【讨论】:

是的,我解决了这个问题,你是绝对正确的。这有点尴尬,因为我什至无法发现实际问题是什么,但我会记住这一点。谢谢:) @TomTom【参考方案3】:

https://www.godaddy.com/help/set-directory-permissions-windows-6481 这是一本设置goddady写权限的手册。希望它有帮助。在您的代码将工作的文件夹上为您的应用授予写入权限

【讨论】:

【参考方案4】:

您的代码没有问题,Godaddy 主机存在访问问题。 Goto > Virtual Directory > Directory Access Permission 并将Full Control 设置为Application pool group

【讨论】:

以上是关于将图像文件上传到服务器 asp.net的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Retrofit 在 android 中调用图像上传 Web 服务 (ASP.NET) .asmx 文件

使用 ASP.NET Core Web API 将图像上传到 Cloudianary 时出现空文件错误

ASP.NET 图像上传与调整大小

如何使用 Retrofit 将图像文件从 Android 上传到 ASP.NET(Web Services-ASMX) 上传文件夹

如何将图像从 Asp.net Core IFormFile 上传到 Azure Blob 存储?

asp.net 从 mp3 创建波形图像