上传文件组件ajaxFileUpload

3 篇文章 0 订阅

1.options参数说明:

1、url            上传处理程序地址。
2、fileElementId      需要上传的文件域的ID,即的ID。
3、secureuri        是否启用安全提交,默认为false。
4、dataType         服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
5、success         提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
6、error          提交失败自动执行的处理函数。
7、data            自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。
8、type             当要提交自定义参数时,这个参数要设置成post

2.上传弹出框和上传摁扭

<div id="uploadAppendixPop" class="pop"  style="display:none;">
    <table class="tableInput" id="uploadAppendixModel">
        <tbody>
	        <tr>
	            <td class="bgtd">上传附件路径</td>
	            <td>
	                <input type="file" id="uploadAppendixFileRoad" name="uploadAppendixFileRoad" >
	            </td>
	        </tr>
        </tbody>
    </table>
</div>

<button class="btn" onclick="uploadAppendix('xxxx')">上传附件</button>

3.上传js(dataType通常设置为json,后端传上来时设置resp.setContentType("application/json; charset=UTF-8"),前端转为json:var data =  $.parseJSON(json);

function uploadAppendix(Id) {
	$('#uploadAppendixFileRoad').val('');
	fileIds = {};
	var index = layer.open({
		type: 1,
		title: '上传文件',
		skin: 'layui-layer-rim',
		area: ['520px', '180px'],
		content: $('#uploadAppendixPop'),
		btn: ['确定', '取消'],
		btnAlign: 'c',
		btn1: function () {
			submitAppendixForm( applyId, function(){
				layer.close(index);
			});
		},
		btn2: function () {

		}
	});
}
/**
 * 提交上传文件
 * @param entityId
 * @Param entityCode 
 */
function submitAppendixForm(Id, callback) {
	var file = $("#uploadAppendixFileRoad").val();
	var fileName = file.replace(/^.+?\\([^\\]+?)(\.[^\.\\]*?)?$/gi, "$1"); // 获取文件名,不带后缀
	if (fileName.length == 0) {
		layer.msg("附件文件名称不允许为空 !");
		return false;
	}
	if (filaNameSpecialCode(fileName)) {
		layer.msg("附件文件名称不能包含特殊字符!");
		return false;
	}
	if (fileName.length > 50) {
		layer.msg("附件文件名称长度不能超过50!");
		return false;
	}

	if (!isEmpty(fileName)) {
		$.ajaxFileUpload({
			url: "/Servlet?method=methodName&Id=" + Id,
			type: 'post',
			dataType : 'json',
			secureuri: false,
			fileElementId: 'uploadAppendixFileRoad',// file标签的id
			success: function (json) {
				var data =  $.parseJSON(json);
				if (data.result == "101") {
					layer.alert(data.message);
				} else {
					layer.alert("上传成功");
					setTimeout(function(){
						callback();
					},200);
				}
			},
			error: function () {
				layer.alert("上传附件失败");
			}
		});
	} else {
		layer.alert("上传文件不能为空");
		return;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ajaxfileupload.js可以兼容IE8以下版本实现无刷新的Form提交,上传文件。 这个版本修改了提交后台失败的几个bug 使用是需注意以下几点: 1.调用createUploadForm,此方法中增加了change参数,此参数用户给新生成的input-file元素绑定change事件,如果不需要可以不加此参数。 2.要上传的input-file元素,建议放id和name属性,而且这两个属性值要保持一致 3.后台代码中,response里的contenttype要设置为"text/html",前台的success回调中对返回值作处理 例子如下: js: $.ajaxFileUpload({ url: url, type: 'post', data: data, secureuri: false, fileElementId: fileId, // input-file的id、name属性名 dataType: 'JSON', beforeSend: function (XMLHttpRequest) { //show loading... }, success: function (data, status) { data = jQuery.parseJSON(data); success(data); }, error: function (data, status, e) { error(e); }, complete: function (XMLHttpRequest, textStatus) { //hide loading... }, change: change //需要绑定到动态生成的input-file元素上的change事件处理方法;没有的话,这个参数可以不写 }); 如果加了change,change方法中需要处理一下,因为发现会被调2次 function Upload(event) { var fileid = $(event.target).attr('id'); if(isNullOrEmpty(fileid) || /^jUploadFile\d+$/.test(fileid))return; //注意:此处过滤无效调用 //... } 后台代码(ashx): public void ProcessRequest(HttpContext context) { try { context.Response.ContentType = "text/html"; var request = context.Request; var param1 = request.Params["param1"]; //取参数 //取上传文件 if (request.Files == null || request.Files.Count <= 0) throw new ApplicationException("no file to be uploaded!"); var file = request.Files[0]; var filename = System.IO.Path.GetFileName(file.FileName); var serverpath = Path.Combine(context.Server.MapPath(ROOT), filename); file.SaveAs(serverpath); //自定义返回Json字符串 var json = '{' + string.Format(json, id, finfo.Name, extension, path) + '}'; response.Write(json); return; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值