在asp.net mvc3 中,在controller中使用HttpPostedFileBase file 参数获取上传的文件,文件路径问题
在asp.netmvc3中,在controller中使用HttpPostedFileBasefile参数获取上传的文件,开始的时候file.filename获取的为文件的...
在asp.net mvc3 中,在controller中使用HttpPostedFileBase file 参数获取上传的文件,开始的时候file.filename获取的为文件的名称,后来不知为何,file.filename 获取的为文件的全路径。查了下msdn,HttpPostedFileBase 的filename 属性确实为获取全路径。我想知道为什么, 希望高人指点谢谢!
file.SaveAs(path + file.FileName);//保存文件
这句代码中file.FileName 为文件的全路径,还是只是文件名称? 展开
file.SaveAs(path + file.FileName);//保存文件
这句代码中file.FileName 为文件的全路径,还是只是文件名称? 展开
2个回答
展开全部
重新说明一下,之前我测试用的是谷歌浏览器不是IE。在IE中file.FileName包含路径名的,而谷歌不包含。所以我之前的回答中才会说文件名中不包含路径名,我想你问题就是这个引起的。你可以在保存前加个判断:
string fileName = file.FileName;
if (fileName.LastIndexOf("\\") > -1)
{
fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1);
}
这样就Ok了,同时兼容谷歌和IE
string fileName = file.FileName;
if (fileName.LastIndexOf("\\") > -1)
{
fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1);
}
这样就Ok了,同时兼容谷歌和IE
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcTest1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "欢迎使用 ASP.NET MVC!";
return View();
}
//上传文件的控件name是file1,也就是<input type="file" name="file1" />
//上传到Upload文件夹(与Controllers文件夹同级)
[HttpPost]
public ActionResult About()
{
HttpFileCollectionBase files= Request.Files;
HttpPostedFileBase file = files["file1"];//获取上传的文件
if (file != null && file.ContentLength > 0)
{
string path = Server.MapPath("~/Upload/");//获取uplaod文件夹路径
try
{
file.SaveAs(path + file.FileName);//保存文件
}
catch (Exception e)
{
throw e;
}
}
else
{
//文件为空的处理
}
return View();
}
}
}
这是我的代码,我试了,可以上传成功的,当然不能大于4M,因为web.config我没配置。
我不知道你那是什么样的问题,但是像我这样是没有问题的。
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcTest1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "欢迎使用 ASP.NET MVC!";
return View();
}
//上传文件的控件name是file1,也就是<input type="file" name="file1" />
//上传到Upload文件夹(与Controllers文件夹同级)
[HttpPost]
public ActionResult About()
{
HttpFileCollectionBase files= Request.Files;
HttpPostedFileBase file = files["file1"];//获取上传的文件
if (file != null && file.ContentLength > 0)
{
string path = Server.MapPath("~/Upload/");//获取uplaod文件夹路径
try
{
file.SaveAs(path + file.FileName);//保存文件
}
catch (Exception e)
{
throw e;
}
}
else
{
//文件为空的处理
}
return View();
}
}
}
这是我的代码,我试了,可以上传成功的,当然不能大于4M,因为web.config我没配置。
我不知道你那是什么样的问题,但是像我这样是没有问题的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询