网上有各种各样的文件上传方法,有基于JS框架的、也有基于flash swf插件的。

这次分享一个比较简单而且实用能快速上手的文件上传方法,主要步骤:

1.引用Jquery包,我用的是jquery-1.11.3.min.js 版本

2.编写JS代码

3.HTML中增加type=file控件

代码如下:

HTML代码:

    <form id="fileupload" method="post"  enctype = "multipart/form-data">
<input type="file" id="fileid" name="fileid" accept="application/vnd.ms-excel">
     <input type="button" id="confirmuploadid" value="上传" />
</form>
//JS实现

$('#confirmuploadid').on('click', function () {
    uploadProduct();

});

function uploadProduct() {
var formid = $("#fileupload");
var fd = new FormData(formid[0]); //form表单的方式实例化一个formData
fd.append('file', $('#fileid')[0].files);
fd.append('userid', userid);
$.ajax({
url: 'File/Setting',
type: 'POST',
dataType: 'JSON',
data: fd,
async: false,
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
$("#confirmuploadid").prop("disabled", true);
},
success: function (returndata) {
$("#confirmuploadid").prop("disabled", false);
alert(returndata.Message);
},
error: function (returndata) {
alert("上传失败,请检查数据正确性,如:有些数字输入项,是否输入了字符!");
}
});
}
//MVC实现
public class FileController : Controller
{
[HttpPost]
public ActionResult Setting()
{
string userid = ""; string username = "";
FunctionBackMessage functionBackMessage = new FunctionBackMessage();
functionBackMessage.IsSuccess = false;
functionBackMessage.Message="上传失败,稍后重试!";
if (!string.IsNullOrEmpty(username))
{
HttpFileCollectionBase files = Request.Files;
string _urlstr = Request.Url.AbsoluteUri;
FunctionBackMessage fc = new FunctionBackMessage();
fc.IsSuccess = true; fc.Message = "上传成功";
if (files.AllKeys.Length > )
{
for (int i = ; i < files.AllKeys.Length; i++)
{
var myFile = files[i];
double myFileLength = myFile.ContentLength / 1024.0 / 1024.0;
int InputMediaExcelLength = !string.IsNullOrEmpty(Global.GetAppString("InputMediaExcelLength")) ? int.Parse(Global.GetAppString("InputMediaExcelLength")) : ; if (myFileLength > InputMediaExcelLength)//超出指定大小
{
fc.IsSuccess = false; fc.Message = "为了保证数据处理效率,每次上传文件小于" + InputMediaExcelLength + "M,如超出请拆分记录分多次上传!";
}
else
{
// string projectId = context.Request["projectId"];
// string username = context.Request["username"];
if ((!Path.GetExtension(myFile.FileName).Contains("xls") && !Path.GetExtension(myFile.FileName).Contains("xlsx")))
{
functionBackMessage.IsSuccess = false; functionBackMessage.Message = "请上传Excel格式文件!";
return Json(functionBackMessage, "application/json");
}
//文件保存
string uploadPath = HttpContext.Current.Server.MapPath("/tempfile") + "\\";//服务器临时路径(不含文件名和后缀)
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
string fileName = DateTime.Now.Ticks + "_" + myFile.FileName;
string fileFull = uploadPath + fileName;//文件路径,包含文件名和后缀 try
{ myFile.SaveAs(fileFull);//保存文件
}
catch (Exception ex)
{
com.log.Loger.Debug("uploadMediaSource 保存文件失败", ex);
} }
}
}
else
{
functionBackMessage.IsSuccess = false; functionBackMessage.Message = "没有获取到上传文件";
}
}
return Json(functionBackMessage, "application/json");
}
}

jquery ajax file upload NET MVC 无刷新文件上传的更多相关文章

  1. SpringMVC ajax技术无刷新文件上传下载删除示例

    参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...

  2. 【JS】ajax 实现无刷新文件上传

    一.摘要 最近在做个东西,需要实现页面无刷新文件上传,目前看到的方法有两种 1) 通过隐藏iframe 实现页面无刷新,适用于不关心上传结果 <form target="hiddenF ...

  3. Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)

    Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ...

  4. 使用PHP和HTML5 FormData实现无刷新文件上传教程

    无刷新文件上传是一个常见而又有点复杂的问题,常见的解决方案是构造 iframe 方式实现. 在 HTML5 中提供了一个 FormData 对象 API,通过 FormData 可以方便地构造一个表单 ...

  5. Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

    相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认”拿来主义“,只是我个人更喜欢凡是求个所以 ...

  6. ie8实现无刷新文件上传

    ie8由于无法使用FormData,想要无刷新上传文件就显得比较麻烦.这里推荐使用jQuery-File-Upload插件,它能够很方便的解决ie8无刷新文件上传问题.(最低兼容到ie6) jQuer ...

  7. 实用ExtJS教程100例-009:ExtJS Form无刷新文件上传

    文件上传在Web程序开发中必不可少,ExtJS Form中有一个filefield字段,用来选择文件并上传.今天我们来演示一下如何通过filefield实现ExtJS Form无刷新的文件上传. 首先 ...

  8. 定制jQuery File Upload为微博式单文件上传

    日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. jQuery File Upload是一个非常优秀的上传组件,主要使用了XHR作为上传方 ...

  9. 基于jQuery Ajax实现无刷新文件上传

    最近因项目需求更改,需要实现选择文件后即时上传至服务器,然后提交后,加载xls表格内容到jqgrid表格中,文件上传功能实现示例: 前端jsp页面: <form id="uploadF ...

随机推荐

  1. Linux tar包安装Nginx-1.7.6 (yum方式安装依赖)

    1.首先安装依赖包(依赖包有点多,我们采用yum的方式来安装) yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel ...

  2. PAT乙级-1037. 在霍格沃茨找零钱(20)

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...

  3. vc的环境变量配置和缺少mspdb60.dll的解决方法

    vc的编译器是cl.exe,我们如果在vc中编译就不用配置环境,但是如果要在任何位置用命令提示符打开编译器cl.exe来编译程序,那么就要配置环境了. 下面我就讲讲vc的环境变量配置和缺少mspdb6 ...

  4. 使用uiautomation自动化重命名pdf书签,使全大写字母变成首字母大写

    今天下载了一个英文pdf书籍,但书签全是大写英文字母,看上去有点别扭,于是想办法用自动化重命名pdf书签, 使书签全部变成首字母大写. pdf原始书签如下图: 重命名后的pdf书签 自动化动态效果图, ...

  5. IPFS: NAT traversal(NAT穿越)

    IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越.之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT.   为什么有NAT技术? NAT ...

  6. 1-5 hibernate学习笔记(11-14章)

    一,概念详解 1.持久化persistent 是指将内存中的数据保存到磁盘.数据库等存储设备中. 2.持久化对象:已经储存到磁盘或者数据库中的业务对象. 3.在java中对对象的持久化有三种方法: 1 ...

  7. V-bind详细使用

    v-bind  主要用于属性绑定,Vue官方提供了一个简写方式 :bind,例如: <!-- 完整语法 --> <a v-bind:href="url">& ...

  8. 【Python】 html解析BeautifulSoup

    BeautifulSoup bs是个html解析模块,常用来做爬虫? ■ 安装 BeautifulSoup可以通过pip来安装,用pip install beautifulsoup4 即可.但是仅仅这 ...

  9. 计时器setInterval()、setTimeout()

    计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码. 语法: setInterval(代码,交互时间); 参数说明: 1. 代码:要调用的函数或要执行的代码串. 2. 交互 ...

  10. [poj3468]A Simple Problem with Integers_线段树

    A Simple Problem with Integers 题目大意:给出n个数,区间加.查询区间和. 注释:1<=n,q<=100,000.(q为操作次数). 想法:嗯...学了这么长 ...