【问题标题】:FileUpload does not let me to saveFileUpload 不允许我保存
【发布时间】:2016-05-24 14:26:46
【问题描述】:

我有一个令人困惑的问题。我正在尝试使用 FileUpload。以下代码在本地运行良好:

    var postedFile = uploader.PostedFile;
    var fileName = Path.GetFileName(postedFile.FileName);
    var extension = Path.GetExtension(fileName);
    var newFile = Guid.NewGuid() + extension;
    var imageFilePath = Path.Combine(this.Server.MapPath("~/ProductImages"), newFile);
    uploader.SaveAs(imageFilePath);

但是当我将代码发布到 Internet 上的服务器时,会发生以下异常:

找不到路径的一部分[...]

当我将uploader.SaveAs(imageFilePath); 更改为uploader.SaveAs(imageFilePath.Replace(this.Request.ServerVariables["APPL_PHYSICAL_PATH"], "..\\")); 时,出现此异常:

SaveAs 方法配置为需要有根路径,而路径[..] 没有根。

谁能告诉我如何使用上传器?我该如何解决这个问题?

感谢

【问题讨论】:

    标签: c# asp.net file-upload webforms


    【解决方案1】:

    您的代码没有问题。当您在 Web 服务器上运行应用程序时,Web 服务器由 OS 中的用户管理。(例如,nobody 用于 enginx 或 IIS 中的应用程序池组)。 您应该为要保存数据的文件夹设置权限。这可以在您的托管文件管理器面板中或通过直接访问操作系统来完成。

    【讨论】:

      【解决方案2】:

      问题是本地帐户在 Active Directory 上的远程资源上无效 - 您需要以 ComputerName$ 或匿名身份连接,具体取决于您使用的本地身份类型。

      我可以在调试模式下上传,但不能在已发布的网站上上传,所以这可能对你 Mohammad 有所帮助。

      【讨论】:

      • 实际上这是托管我的应用程序的服务器。我不知道它的规格。
      【解决方案3】:

      您确定服务器上存在 ProductImages 文件夹吗?

      你可以试试打电话

      Directory.CreateDirectory(this.Server.MapPath("~/ProductImages"))
      

      在保存文件之前。如果目录不存在,它将创建目录,如果存在则不执行任何操作。

      【讨论】:

      • 感谢您的回复。但是 :-( 它不起作用。异常仍在发生。
      【解决方案4】:

      我终于通过设置文件夹的权限解决了这个问题。我为该文件夹设置了“Application pool group”的写入权限,现在我可以通过我的应用上传任何文件。

      谢谢

      【讨论】:

        【解决方案5】:

        试试这个..上传和插入数据库中的值..

        string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
                        FileUpload1.SaveAs(Server.MapPath("~/" + filename));
                        Stream str = FileUpload1.PostedFile.InputStream;             
                                con.Open();
                                SqlCommand cmds = new SqlCommand("insert into datas(name,path,types,pricing)values(@name,@path,@types,@pricing)", con);
                                cmds.Parameters.AddWithValue("@name",d);
                                cmds.Parameters.AddWithValue("@path", filename);
                                cmds.Parameters.AddWithValue("@types", RadioButton1.Text);
                                cmds.Parameters.AddWithValue("@pricing", "FineGrained");
                                cmds.ExecuteNonQuery();
                                Response.Write("<script>alert('successfully uploaded');</script>");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-20
          • 2017-08-24
          • 1970-01-01
          • 2021-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多