使用jquery.form.min.js 异步上传图片
浏览数 190900
赞
(0)
本示例基于jQuery以及相当出色的jquery.form插件,所以,先要载入jquery库和form插件。
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
接着在页面中加入如下代码:
<div class="btn">
<span>添加附件</span>
<input id="fileupload" type="file" name="mypic">
</div>
<div class="progress">
<span class="bar"></span><span class="percent">0%</span>
</div>
<div class="files"></div>
<div id="showimg"></div>
我们在html中放置一个添加附件的按钮元素.btn,以及进度条.progress,用于显示文件信息的.files和显示图片的#showimg 可以看出,我们用于上传文件的html中并没有出现form表单,而正常的上传功能是要依赖form表单的。我们的form表单是动态插入的,这样可以避免一个大表单中出现多个form。
jQuery
首先定义各种变量,注意动态将表单元素form插入到上传按钮部位,并且form的属性enctype必须设置为:multipart/form-data。然后当点击“上传附件”按钮,选择要上传的文件后,调用jquery.form插件的ajaxSubmit方法,如下代码说明。
$(function () { var bar = $('.bar'); var percent = $('.percent'); var showimg = $('#showimg'); var progress = $(".progress"); var files = $(".files"); var btn = $(".btn span"); $("#uploadimg").wrap("<form id='myupload' action='/uploadimg.php' method='post' enctype='multipart/form-data'></form>"); $("<input type='hidden' name='_token' value='"+csrf_token+"'>").appendTo($("#myupload")); $("#uploadimg").change(function(){ //选择文件 $("#myupload").ajaxSubmit({ dataType: 'json', //数据格式为json beforeSend: function() { // //开始上传 // showimg.empty(); // //清空显示的图片 // progress.show(); // //显示进度条 // var percentVal = '0%'; $("#imgview").attr('alt', '0%'); // //开始进度为0% // bar.width(percentVal); // //进度条的宽度 // percent.html(percentVal); // //显示进度为0% // btn.html("上传中..."); // //上传按钮显示上传中 }, uploadProgress: function(event, position, total, percentComplete) { var percentVal = percentComplete + '%'; $("#imgview").attr('alt', percentVal); // //获得进度 // bar.width(percentVal); // //上传进度条宽度变宽 // percent.html(percentVal); // //显示上传进度百分比 }, success: function(data) { // //成功 // //获得后台返回的json数据,显示文件名,大小,以及删除按钮 // files.html("<b>"+data.name+"("+data.size+"k)</b> <span class='delimg' rel='"+data.pic+"'>删除</span>"); // //显示上传后的图片 // var img = "http://demo.helloweba.com/upload/files/"+data.pic; // showimg.html("<img src='"+img+"'>"); // btn.html("添加附件"); // //上传按钮还原 layer.alert(data.msg); if (data.code===0) { $("#imgview").attr('src', data.data).show(); $("#imginput").val(data.data); } $("#uploadimg").empty(); }, error:function(xhr){ // //上传失败 // btn.html("上传失败"); // bar.width('0'); // files.html(xhr.responseText); // //返回失败信息 } }); }); }); |