我正在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。 所以请帮我解决问题
答案 0 :(得分:26)
我怀疑问题是你使用字符串“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:)
答案 1 :(得分:3)
使用 Server.MapPath()
:
fileUploader.SaveAs(Server.MapPath("~/Images/")+"file.jpg");
答案 2 :(得分:2)
如果您想将上传的文件保存到fp的值,请将其传入,不要将其放在引号中:
tt.PostedFile.SaveAs(fp);
答案 3 :(得分:2)
在阅读问题的标题时,我认为你在变量名称周围加上了引号。不是真的相信它是如此,我打开了问题来阅读它,但它确实是这样......
答案 4 :(得分:1)
我遇到了同样的问题。问题是您没有指定要保存文件的服务器的路径。这是一个可能更简单的答案:
string fileName = tt.PostedFile.FileName;
string savePath = Server.MapPath("Path/Of/The/Folder/Comes/Here/") + fileName);
tt.PostedFile.SaveAs(savePath);
答案 5 :(得分:1)
我们无法使用“ SaveAs ”方法直接写入FTP服务器。 上述方法仅支持本地路径和UNC路径。
要将其保存到FTP,请使用 FtpWebRequest 类。
您将在social.msdn。
中的相同类型的问题答案中获得完整的详细信息请浏览链接..您将能够解决问题..
- 感谢 Jesse HouwingXPirit(MCC,合作伙伴,MVP)的回答