好的我见过几个人有这个问题 - 但我已经在使用文件路径,而不是相对路径。我的代码在我的电脑上工作正常,但当另一位开发人员上传图片时,他们会收到此错误。我认为这是文件夹上的安全权限 - 但系统帐户可以完全访问该文件夹(尽管我对如何测试应用程序运行的帐户感到困惑)。通常在本地运行通常不会给你太多安全问题:)
代码段:
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上有文件夹)。
任何建议都将不胜感激 - 谢谢:)
答案 0 :(得分:0)
显然它说的是你的filenameToWriteTo不是一个根路径...即它是一个相对路径,你的服务器配置不喜欢这样。使用Server.MapPath获取真实路径......类似......
string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo);
fileUpload.PostedFile.SaveAs(realPhysicalPath);
以防打印出你的filenameToWriteTo以查看它的相对路径或物理路径。如果相对使用上述方法。
答案 1 :(得分:0)
不确定问题是什么,因为它自行解决。我们最终没有调试它,因为它是在非开发人员的PC上,我有一个解决方法让他继续他的工作,同时我调查了潜在的原因。因此,他可能通过抓取我的目录副本来更新/运行网站或修复文件权限。
至少我知道它需要物理文件路径,所以希望不会再遇到这个!
答案 2 :(得分:0)
请确保存在保存文件的文件夹。如果文件夹不存在,则不会为您创建,并且SaveAs方法将抛出您现在拥有的异常。
谢谢。