如何将文件上传到网址

时间:2013-03-11 13:30:10

标签: c# file-upload asp.net-mvc-4

我正在尝试从浏览器上传文件并将其复制到URL文件夹

使用c sharp。

(我拥有此文件夹的所有权限)

我没有将传真文件上传到我的硬盘

像这样:

HttpPostedFileBase myfile;

var path = Path.Combine(Server.MapPath("~/txt"), fileName);

myfile.SaveAs(path);

我尝试将其上传到这样的网址,但我得到了一个例外

HttpPostedFileBase myfile;

var path =VirtualPathUtility.ToAbsolute("http://localhost:8080/game/images/"+fileName);

myfile.SaveAs(path);

例外:

System.ArgumentException: The relative virtual path 'http:/localhost:8080/game/images/ a baby bottle. Jpg' is not allowed here.
    In - System.Web.VirtualPath.Create (String virtualPath, VirtualPathOptions 

2 个答案:

答案 0 :(得分:2)

您无法将文件上传到远程位置。如果您希望这一点起作用,则必须修改远程服务器以使其接受文件上载,就像服务器接受文件上载一样,然后使用WebClient向其发送HTTP请求。您不能使用SaveAs方法,因为它需要本地路径。

您可以执行以下控制器操作:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase myFile)
{
    if (myFile != null && myFile.ContentLength > 0) 
    {
        var fileName = Path.GetFileName(myFile.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data"), fileName);
        myFile.SaveAs(path);
    }    

    ...
}

和带有文件输入的相应表单:

@using (Html.BeginForm("Upload", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="myFile" />
    <button type="submit">Click this to upload the file</button>
} 

答案 1 :(得分:0)

您应该使用Server.MapPath("Path")

var path = Server.MapPath("~/images/") + fileName);
myfile.SaveAs(path);