将文件上载到服务器
本文关键字:服务器 上载 文件 | 更新日期: 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并更新权限。