https://www.cnblogs.com/sxkang/p/13361068.html
文件上传:
视图 view:
@{
ViewBag.Title = "Index";
}
<h2>文件管理</h2>
ViewBag.Title = "Index";
}
<h2>文件管理</h2>
<form enctype="multipart/form-data">
<input id="F1" type="file" />
<input id="Button1" type="button" value="上传" onclick="upload()" />
</form>
<input id="F1" type="file" />
<input id="Button1" type="button" value="上传" onclick="upload()" />
</form>
<script>
function upload() {
var data = new FormData();
//获取文件
var file = document.getElementById("F1").files[0];
//添加数据
data.append("F1", file);
$.ajax({
url: '/File/Upload/',
type: 'post',
data: data,
contentType: false,//必须false才会自动加上正确的Content-Type
processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
success: function (d) {
if (d>0) {
alert("上传成功!");
return;
} else {
alert("上传失败!");
return;
}
}
});
}
</script>
var data = new FormData();
//获取文件
var file = document.getElementById("F1").files[0];
//添加数据
data.append("F1", file);
$.ajax({
url: '/File/Upload/',
type: 'post',
data: data,
contentType: false,//必须false才会自动加上正确的Content-Type
processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
success: function (d) {
if (d>0) {
alert("上传成功!");
return;
} else {
alert("上传失败!");
return;
}
}
});
}
</script>
控制器 controller
public ActionResult Index()
{
return View();
}
/// <summary>
/// 文件上传
/// </summary>
/// <returns></returns>
[HttpPost]
public int Upload()
{
//判断文件是否选中
if (Request.Files.Count>0)
{
//获取文件
var file = HttpContext.Request.Files[0];
//获取上传文件的扩展名
//首先将文件名按.切割
var temp = file.FileName.Split('.');
//获取扩展名
var extendName = temp[temp.Length - 1];
//获取路径
var path = HttpContext.Server.MapPath("~/Upload/");
//判断路径是否存在
if (Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//文件重新命名
var name = DateTime.Now.ToFileTime() + "." + extendName;
//保存上传文件
file.SaveAs(Path.Combine(path, name));
//返回结果
return 1;
}
else
{
return 0;
}
}
{
return View();
}
/// <summary>
/// 文件上传
/// </summary>
/// <returns></returns>
[HttpPost]
public int Upload()
{
//判断文件是否选中
if (Request.Files.Count>0)
{
//获取文件
var file = HttpContext.Request.Files[0];
//获取上传文件的扩展名
//首先将文件名按.切割
var temp = file.FileName.Split('.');
//获取扩展名
var extendName = temp[temp.Length - 1];
//获取路径
var path = HttpContext.Server.MapPath("~/Upload/");
//判断路径是否存在
if (Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//文件重新命名
var name = DateTime.Now.ToFileTime() + "." + extendName;
//保存上传文件
file.SaveAs(Path.Combine(path, name));
//返回结果
return 1;
}
else
{
return 0;
}
}
文件下载:
视图 view:
<a href='@Url.Action("Download","File",new { fileName=item.FName})'>下载文件</a>
控制器 contorller:
/// <summary>
/// 下载文件
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public FileStreamResult Download(string fileName)
{
string filePath = Server.MapPath(string.Format("~/{0}/{1}", "Upload", fileName));
FileStream fs = new FileStream(filePath, FileMode.Open);
return File(fs, "text/plain", fileName);
}
/// 下载文件
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public FileStreamResult Download(string fileName)
{
string filePath = Server.MapPath(string.Format("~/{0}/{1}", "Upload", fileName));
FileStream fs = new FileStream(filePath, FileMode.Open);
return File(fs, "text/plain", fileName);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)