Html中的代码:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta charset="utf-8" />
<script src="Contents/JScript/jquery.min.js"></script>
</head>
<body>
<form id="uploadForm">
<!-- ajax请求的话不需要method="post" action="MvcUload.html" enctype="multipart/form-data"这些参数,否则405错误-->
<!--<form method="post" action="MvcUload.html" enctype="multipart/form-data" id="uploadForm">-->
<input type="file" name="file" id="file" /><button onclick="fnUpload()">上传文件</button>
</form>
<form method="post" action="../../UploadFiles/DownLoadFile" enctype="multipart/form-data" id="uploadForm1">
<button onclick="fnSubmit()">下载文件</button>
</form>
<script>
function fnUpload() {
var formData = new FormData($("#uploadForm")[0]);//var formData = new FormData();//formData.append("file", $("#file")[0].files[0]); //获取文件法二   两种方法都可以
             $.ajax({
async: false,//要求同步 不是不需看你的需求
url: "../UploadFiles/SaveFile",
type: 'POST',
data: formData,
processData: false, //必须false才会避开jQuery对 formdata 的默认处理
contentType: false, //必须false才会自动加上正确的Content-Type
success: function (res) {
alert(res);
}, error: function (res) {
alert("请求失败");
}
}); }
function fnSubmit() {
$("#uploadForm1").submit();
}
</script>
</body>
</html>

C#后台控制器里面的方法:

  public class UploadFilesController : Controller
{
//保存文件
public string SaveFile()
{
var result = "";
HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
if (files.Count>)
{
HttpPostedFile file = files[];//一次上传一个文件
if (file.ContentLength > )
{
try
{
var path = Server.MapPath("../uploadfiles");
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
var combineName = System.IO.Path.Combine(path, System.IO.Path.GetFileName(file.FileName));//组合成路径
file.SaveAs(combineName);
result = "文件上传成功!";
}
catch (Exception e)
{
result = e.ToString();
}
}
else
result = "文件不能为空!";
}
else
result = "文件不能为空!";
return result;
} //下载文件
public void DownLoadFile()
{
HttpRequest request = System.Web.HttpContext.Current.Request;
var re = request.Url;//查看请求地址,发现 /UploadFiles/DownLoadFile request.Url.LocalPath http://localhost:2565/UploadFiles/DownLoadFile request.Url.OriginalString
//请求地址都不是Controllers文件夹下面的地址,需要注意表单action的地址
HttpResponse response = System.Web.HttpContext.Current.Response;
var files = Directory.GetFiles(Server.MapPath("../uploadfiles"));
if (files.Length > ) {
var fileUrl = files[];//取第一个下载
var fileArr = fileUrl.Split('\\');
var fileName = fileArr[fileArr.Length - ];
response.Clear();
response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName));
response.TransmitFile(fileName);
}
}
}

Html Ajax上传文件,form表单下载文件的更多相关文章

  1. 使用隐藏form表单下载文件,解决url方式下载,由于环境问题而限制url长度,满足不了所有的需求!

    一 对于某些环境导出是直接用wiondow.href=url直接导出下载,有些业务需求,如员工档案等字段比较多的时候,全选导出就会引发异常,由于Nginx转发长度限制的问题, 如果运维不愿意改变环境, ...

  2. Struts2文件上传(基于表单的文件上传)

    •Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目   •Commons-Fil ...

  3. 【文件上传】文件上传的form表单提交方式和ajax异步上传方式对比

    一.html 表单代码 …… <input type="file" class="file_one" name="offenderExcelFi ...

  4. Java中request请求之 - 带文件上传的form表单

    常用系统开发中总免不了显示图片,保存一些文件资料等操作. 这些操作的背后,就是程序员最熟悉的 enctype="multipart/form-data"类型的表单. 说起file类 ...

  5. 理解流方式上传和form表单上传

    流方式上传: $post_input = 'php://input'; $save_path = dirname( __FILE__ ); $postdata = file_get_contents( ...

  6. Ajax提交Form表单及文件上传

    刚刚申请下来的博客,写得第一篇.有点小激动,本人以前是一名工业3D设计师突然有些变故做上了JavaWeb开发: 前几天,发现了一些小问题.我在写后台管理页面时,需要上传一张图片.于是我就用很普通的Fo ...

  7. layui框架实现多图片手动上传和随表单提交方法

    首先在官方文档并没有手动上传的说明文档,这里手动实现上传原理是:在表单中有三个按钮,分别是上传图片按钮.隐藏上传按钮.表单提交按钮,点击上传图片按钮之后,图片添加在前端但是并没有真正的上传,而是在点击 ...

  8. 导出excel用ajax不行,提交form表单可以

    导出excel用ajax不行,提交form表单可以. 一直用ajax找原因,网页不出现下载提示框 写了 response.setContentType("application/binary ...

  9. Atitit vue.js 把ajax数据 绑定到form表单

    Atitit vue.js 把ajax数据 绑定到form表单 1.1. 使用场景:主要应用在编辑与提交场合..1 1.2. 绑定数据到form控件,可以使用jquery,不过vue.js更加简单1 ...

随机推荐

  1. 请不要继续使用VC6.0了!

    很多次和身边的同学交流,帮助同学修改代码,互相分享经验,却发现同学们依然在使用老旧的VC6.0作为编程学习的软件,不由得喊出:“请不要继续使用VC6.0了!”. VC6.0作为当年最好的IDE(集成开 ...

  2. node jsonwebtoken

     jsonwebtoken是node版本的JWT(JSON Web Tokens)的实现.1.什么是JWT?Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于J ...

  3. react-router @4用法整理

    在React Router 3上写了一篇文章后不久,我第一次在React Rally 2016上遇到了Michael Jackson.Michael是React Router和Ryan Florenc ...

  4. webpack核心提炼

    基本是学习的时候在网上整理的资料,并非自己原创,这篇文章的的主要目的是记录webpack.config.js的配置方式.可能也有不少错误,欢迎指正!! 一.应用场景 前端模块化开发.功能拓展.css预 ...

  5. mysql主从机制的部署与应用

    部署mysql主从复制 Mysql master ip: 192.168.30.25   一主两从 Mysql slave ip: 192.168.30.24 Mysql slave ip:192.1 ...

  6. struts 2 action result类型

    最近在管理公司老项目的时候发现如下代码: <bean name="detailPlayer" class="PlayAction" method=&quo ...

  7. PAT_A1136#A Delayed Palindrome

    Source: PAT_A1136 A Delayed Palindrome (20 分) Description: Consider a positive integer N written in ...

  8. html 报告页面样式

    修改了下HTML页面样式 页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  9. Lua的热更新学习笔记_01

    热更新的的实现方式 1.使用lua脚本编写游戏的UI或者其他的逻辑 2.使用C#的反射技术 3.使用C#Light AssetBundle是什么? 1.unity提供一个资源更新技术,就是通过Asse ...

  10. python之testlink模块

    1.安装:pip install TestLink-API-Python-client >>>>>>待续