将文件上载到服务器

本文关键字:服务器 上载 文件 | 更新日期: 2023-09-27 18:24:58

我正在为学校做我的第一个MVC项目,遇到了这个问题:

我正在建立一个Classifieds网页,用户可以在这里上传他们想要销售的图片,据我所知,最好的做法是将Image路径存储到Db表中,然后将文件放入服务器中的一个文件中。因此,通过该路径,我可以在网页中检索特定的图像。

问题是,我只能将图像存储在本地计算机中,而不能存储在我发布项目的服务器中。

如何将此文件上载到服务器而不是本地计算机?

这是我的控制器:

public ActionResult CreateAnuncio( HttpPostedFileBase thePic)
{
    if (thePic != null && thePic.ContentLength > 0)
    {
        // string filePath = Path.Combine(Server.MapPath("http://example.com/Sites/mvc/classifieds/Images/slider"), Path.GetFileName(Nuevo.id + thePic.FileName)); // Does not Work
        string filePath = Path.Combine(Server.MapPath("~/Images/slider/"), Path.GetFileName(thePic.FileName)); //Works only for local saving
        thePic.SaveAs(filePath);
    }
    return RedirectToAction("Index");
}

基本上我得到的错误是:

http://example.com/Sites/mvc/classifieds/Images/slider"不是有效的虚拟路径。

这是视图:

<form id="contact_form" method="post" action="/classifieds/CreateAnuncio" enctype="multipart/form-data">
    <input type="file" name="thePic"/>
    <input type="submit" value="Send">
 </form>

将文件上载到服务器

如果在同一服务器中运行代码,则可以使用该文件夹的相对路径。

 var filePath = Path.Combine(Server.MapPath("~/classifieds/Images/slider"),
                                      Path.GetFileName(Nuevo.id + thePic.FileName)); 

如果它是网络中的一个共享位置,但可以从部署代码的服务器访问,那么也应该工作

var filePath = Path.Combine(''myFileServerName'files'",
                                        Path.GetFileName(Nuevo.id + thePic.FileName));

在这两种情况下,请确保更新了目录的权限,以便ASP.NET可以对此进行写入

右键单击文件夹,转到properties->Security并更新权限。