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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 :)

另一答案

使用Server.MapPath()

fileUploader.SaveAs(Server.MapPath("~/Images/")+"file.jpg");
另一答案

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

tt.PostedFile.SaveAs(fp);
另一答案

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

另一答案

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

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

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

请仔细阅读链接..您将能够解决问题..

enter link description here

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

另一答案

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

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

以上是关于SaveAs方法配置为需要根路径,路径'fp'不是root的主要内容,如果未能解决你的问题,请参考以下文章

获取图像文件夹的路径

9/3 树形dp+树的直径+最长路径 +st表

vite为vue3配置@路径,vite路径配置

vite为vue3配置@路径,vite路径配置

vite为vue3配置@路径,vite路径配置

springboot中自定义根路径的配置