将图像从 ASP.NET 上传到 godaddy 文件系统



我的网站上有一个管理面板,允许用户将图像上传到文件系统。我只是在 C# 代码中做:

imageFile.SaveAs(galleryPath + fileName); 

但是收到权限异常:

访问路径"D:\Hosting...\html\Images\Gallery\page2-img1.jpg" 被拒绝。

说明:执行 当前 Web 请求。请查看堆栈跟踪以获取更多信息 有关错误及其在代码中起源位置的信息。 异常详细信息:系统。未经授权访问异常:访问 路径"D:\Hosting...\html\Images\Gallery\page2-img1.jpg"被拒绝。

你能给我一个提示,我该如何授予权限吗?

阅读此故障排除文章,那里有一个解决方案。如果这不起作用,请联系支持;)

http://support.godaddy.com/help/article/6481/setting-directory-permissions-with-windows-hosting-accounts

顺便说一句,更好的做法是使用Path.Combing连接文件夹+文件名

imagefile.SaveAs(System.IO.Path.Combine(galleryPath, fileName));

谢谢大家。我只需要将文件夹的权限更改为读/写。默认情况下,它是只读的。

以下是更多信息: http://support.godaddy.com/help/article/6481/setting-directory-permissions-with-windows-hosting-accounts

好的,

这是我的观点

    @using (Html.BeginForm("Upload", "Pictures", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    <div>
    Title:<br/>
    @Html.EditorFor(x => x.Title)<br/>
    @Html.ValidationMessageFor(x => x.Title)<br/>
    @Html.TextBoxFor(x => x.File, new { 
    type = "file"
    })<br/> 
    @Html.ValidationMessageFor(x => x.File)<br/> 
    Description:<br/>
    @Html.TextAreaFor(x => x.Description)<br/>
    @Html.ValidationMessageFor(x => x.Description)
    </div>
    <div style="clear:both"></div>
    <p><input type="submit" value="Save"/></p>
}

这是我的视图模型

public class UploadModel
    {
        [Required(ErrorMessage=("You have not selected a file"))]
        public HttpPostedFileBase File { get; set; }
        [Required(ErrorMessage = "Please enter a title")]
        [StringLength(50)]
        public string Title { get; set; }
        [StringLength(400)]
        public string Description { get; set; }
    }

这是我的控制器操作。

    [Authorize(Roles = "Approved")]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Upload(UploadModel m)
    {
        byte[] uploadedFile = null;
        Byte123 xxx = new Byte123();
        if (m.File != null && !string.IsNullOrEmpty(m.Title))
        {
            //var fileName = System.IO.Path.GetFileName(m.File.FileName);
            //string c = m.File.FileName.Substring(m.File.FileName.LastIndexOf("."));
           // m.Title = m.Title.Replace(c, "");
            uploadedFile = new byte[m.File.InputStream.Length]; //you get the image as byte here but you can also save it to file.

这是 MVC 代码。如果您使用的是 Web 窗体,则代码应该更短。我从一个链接中得到了这个,但现在找不到它,所以只是发布了我自己的代码。您还需要确保使用 Cpanel 在主机中启用写入权限。

似乎将

网站托管给 godaddy 的开发人员经常面临这个问题。不幸的是,客户服务没有提供解决问题的简单方法。我遇到了这个问题,经过多次谷歌搜索以及尝试和错误,我终于解决了这个问题。确实,此问题与许可有关,但不仅如此。问题是,一般来说,您的网站位于httpdocs文件夹中,这意味着在您网站的主根目录中找到的名称为IMAGES的文件夹将是/httpdocs/IMAGES。

  1. 首先,您必须更改文件夹IMAGES[https://www.godaddy.com/help/set-directory-permissions-in-my-windows-hosting-account-16135]的权限。更改应用程序池组(组或用户名列)的这些权限,并授予将授予写入和修改权限的"完全"控制。同时取消选中允许从父对象继承的权限传播到此对象和所有子对象。将它们包含在此处明确定义的条目中
  2. 同时更改文件夹 httpdocs 的权限。对于此文件夹的应用程序池组,请授予添加写入权限,并且像以前一样,不要忘记取消选中"允许从父对象的可继承权限传播到此对象和所有子对象"。将它们与此处明确定义的条目一起包含。![修改HTTP文档的权限目录][1]: https://i.stack.imgur.com/nAsua.png
  3. 返回您的代码以保存图像(对不起,对于非 csharp 开发人员,这是我使用的语言)。假设在"图像"文件夹中,您有另一个文件夹,该文件夹是要在其中保存图像的管理员。该目录现在是/httpdocs/IMAGES/Administrateurs。使用您可以在许多教程中找到的代码,就我而言,此代码是:
    string cheminImage = "~/httpdocs/IMAGES/Administrateurs";
    try
    {
    if (!Directory.Exists(HttpContext.Current.Request.MapPath(cheminImage)))
    {
    Directory.CreateDirectory(HttpContext.Current.Request.MapPath(cheminImage));
    }
    }
    catch
    {  } 
    

这仅意味着如果目录不存在,只需创建它(我使用的是 .Net 4)。

  1. 使用代码(有许多与如何保存图像相关的教程)来保存图像。通过这样做,我已经成功地将我的图像保存在 godaddy 服务器上。希望你也能做到这一点。

相关内容

最新更新