在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 为文件的全路径,还是只是文件名称?
展开
 我来答
晓小徽的馬甲一
2012-07-05
知道答主
回答量:1
采纳率:0%
帮助的人:2.7万
展开全部
重新说明一下,之前我测试用的是谷歌浏览器不是IE。在IE中file.FileName包含路径名的,而谷歌不包含。所以我之前的回答中才会说文件名中不包含路径名,我想你问题就是这个引起的。你可以在保存前加个判断:
string fileName = file.FileName;
if (fileName.LastIndexOf("\\") > -1)
{
fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1);
}
这样就Ok了,同时兼容谷歌和IE
百度网友15343da
推荐于2018-03-04 · TA获得超过637个赞
知道小有建树答主
回答量:613
采纳率:71%
帮助的人:210万
展开全部
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我没配置。
我不知道你那是什么样的问题,但是像我这样是没有问题的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式