SaveAs方法配置为需要根路径,路径<blah>不是root </blah>

时间:2010-05-14 04:28:54

标签: c# file-upload save-as

好的我见过几个人有这个问题 - 但我已经在使用文件路径,而不是相对路径。我的代码在我的电脑上工作正常,但当另一位开发人员上传图片时,他们会收到此错误。我认为这是文件夹上的安全权限 - 但系统帐户可以完全访问该文件夹(尽管我对如何测试应用程序运行的帐户感到困惑)。通常在本地运行通常不会给你太多安全问题:)

代码段:

        Guid fileIdentifier = Guid.NewGuid();
        CurrentUserInfo currentUser = CMSContext.CurrentUser;
        string identifier = currentUser.UserName.Replace(" ", "") + "_" + fileIdentifier.ToString();
        string fileName1 = System.IO.Path.GetFileName(fileUpload.PostedFile.FileName);
        string Name = System.IO.Path.GetFileNameWithoutExtension(fileName1);
        string renamedFile = fileName1.Replace(Name, identifier);
        string path = ConfigurationManager.AppSettings["MemberPhotoRepository"];

        String filenameToWriteTo = path + currentUser.UserName.Replace(" ", "") + fileName1;
        fileUpload.PostedFile.SaveAs(filenameToWriteTo);

我的配置设置值是:

再一次,这在我的电脑上工作正常! (我检查了另一个人的PC上有文件夹)。

任何建议都将不胜感激 - 谢谢:)

3 个答案:

答案 0 :(得分:0)

显然它说的是你的filenameToWriteTo不是一个根路径...即它是一个相对路径,你的服务器配置不喜欢这样。使用Server.MapPath获取真实路径......类似......

string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo);
fileUpload.PostedFile.SaveAs(realPhysicalPath);

以防打印出你的filenameToWriteTo以查看它的相对路径或物理路径。如果相对使用上述方法。

答案 1 :(得分:0)

不确定问题是什么,因为它自行解决。我们最终没有调试它,因为它是在非开发人员的PC上,我有一个解决方法让他继续他的工作,同时我调查了潜在的原因。因此,他可能通过抓取我的目录副本来更新/运行网站或修复文件权限。

至少我知道它需要物理文件路径,所以希望不会再遇到这个!

答案 2 :(得分:0)

请确保存在保存文件的文件夹。如果文件夹不存在,则不会为您创建,并且SaveAs方法将抛出您现在拥有的异常。

谢谢。