SaveAs方法配置为需要根路径,路径’fp’不是root

我正在Asp.net中进行Image uploader,我在控件下面给出了以下代码:

string st; st = tt.PostedFile.FileName; Int32 a; a = st.LastIndexOf("\\"); string fn; fn = st.Substring(a + 1); string fp; fp = Server.MapPath(" "); fp = fp + "\\"; fp = fp + fn; tt.PostedFile.SaveAs("fp"); 

但在上传或保存图像期间,出现错误消息: SaveAs方法配置为需要根路径,并且路径’fp’不是root。 所以请帮帮我解决问题

我怀疑问题是你使用字符串“fp”而不是变量fp 。 这是固定代码,也使(IMO)更具可读性:

 string filename = tt.PostedFile.FileName; int lastSlash = filename.LastIndexOf("\\"); string trailingPath = filename.Substring(lastSlash + 1); string fullPath = Server.MapPath(" ") + "\\" + trailingPath; tt.PostedFile.SaveAs(fullPath); 

您还应该考虑将倒数第二行更改为:

 string fullPath = Path.Combine(Server.MapPath(" "), trailingPath); 

您可能还想考虑如果发布的文件在文件名中使用/而不是\来会发生什么…例如它是否从Linux发布。 实际上,您可以将前三行的全部内容更改为:

 string trailingPath = Path.GetFileName(tt.PostedFile.FileName)); 

结合这些,我们得到:

 string trailingPath = Path.GetFileName(tt.PostedFile.FileName)); string fullPath = Path.Combine(Server.MapPath(" "), trailingPath); tt.PostedFile.SaveAs(fullPath); 

更清洁,IMO 🙂

如果要将上传的文件保存为fp的 ,只需将其传入,不要将其放在引号中:

 tt.PostedFile.SaveAs(fp); 

在阅读问题的标题时,我认为看起来你在变量名称周围放了引号。 不是真的相信它是这样,我打开了问题来阅读它,但它确实是这样……

我们不能使用“ SaveAs ”方法直接写入FTP服务器。 上述方法仅支持本地路径和UNC路径。

要将其保存到FTP,请使用FtpWebRequest类。

您将在social.msdn中的相同类型的问题答案中获得有关详细信息。

请浏览链接..您将能够解决问题..

在此输入链接描述

– 感谢Jesse HouwingXPirit的回答(MCC,合伙人,MVP)

使用Server.MapPath()

 fileUploader.SaveAs(Server.MapPath("~/Images/")+"file.jpg"); 

我遇到了同样的问题。 问题是您没有指定要保存文件的服务器的路径。 这是一个可能更简单的答案:

 string fileName = tt.PostedFile.FileName; string savePath = Server.MapPath("Path/Of/The/Folder/Comes/Here/") + fileName); tt.PostedFile.SaveAs(savePath);