jquery 文件上传 Uploader 案例

来源:互联网 发布:冰点文库mac版 编辑:程序博客网 时间:2024/05/22 12:38
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>文件上传</title>  <meta http-equiv="pragma" content="no-cache">  <meta http-equiv="cache-control" content="no-cache">  <meta http-equiv="expires" content="0">  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  <meta http-equiv="description" content="This is my page">  <script type="text/javascript" src="/js/jquery/jquery.min.js"></script>      <script type="text/javascript" src="/js/jquery/jquery.json-2.2.min.js"></script>  <script type="text/javascript" src="/js/jquery/plupload/plupload.js"></script>  <script type="text/javascript"src="/js/jquery/plupload/plupload.gears.js"></script><script type="text/javascript" src="/js/jquery/plupload/plupload.flash.js"></script></head><body style="overflow: auto;">  <form id="form_files" action="/servlet/pluploadServlet" method="post">    <input type="button" id="pickfiles" class="ButtonAccessory" value="添加" /><input type="button" id="uploadfiles" class="ButtonUpload" value="上传" /><table id="filelist"><tbody></tbody></table><div id="error"></div>  </form></body></html>
<script type="text/javascript">  $(function() {    var uploader = new plupload.Uploader({   runtimes : 'gears,flash',  browse_button : 'pickfiles', //选择文件按钮ID   max_file_size : '10mb',  //文件上传最大值  chunk_size : '1mb',//文件需要分块上传时,每块的大少  unique_names : true,  // 上传的文件名是否唯一,只有在未进行分块上传时文件名唯一才有效  url : '/servlet/uploadServlet', //提交到后台的url地址  flash_swf_url : '/js/jquery/plupload/plupload.flash.swf',//plupload.flash.swf文件所在路径  silverlight_xap_url : '/js/jquery/plupload/plupload.silverlight.xap',//silverlight所在路径  filters : [  //文件类型过滤,只上传指定的文件类型    {title : "Image files", extensions : "jpg,gif,png"},     {title : "Zip files", extensions : "zip"} ] ,  resize : {width : 100, height : 80, quality : 70}  //上传图片时,是否生成缩略图});  /*在实际使用中根据需要对上述属性进行删、减,* 如chunk_size、unique_names、silverlight_xap_url、resize*//*页面打开时进行初始化界面,如加载已经上传的文件信息*/uploader.bind('Init', function(up) {    $('#filelist tbody').html("<tr><td>暂无上传文件</td></tr>");  });   /*单击【上传】按钮时触发该函数,进行文件上传(其中uploadfiles为上传按钮ID值)*/$('#uploadfiles').click(function(e) {  uploader.start();   });     /*   *绑定事件:FilesAdded(up:Uploader, files:Array)   *   *当选择上传文件时调用该函数;   *   *其中,   *files为本次选择的文件列表;   *up对象中的files属性表示上传队列中的总文件列表(不包括本次选择的文件)   *    * 通过这两个对象可以判断所选文件中是否有重复。   */uploader.bind('FilesAdded', function(up, files) {  $.each(files, function(i, file) { $('#filelist tbody').append( //将选择的文件添加到页面'<tr id="'+file.id+'"><td>'+file.name+'</td><td>'+plupload.formatSize(file.size)+'</td><td><b></d></td></tr>') });   up.refresh(); // Reposition Flash/Silverlight });  /**绑定事件:UploadProgress(uploader:Uploader, file:File)*当单击上传按钮时,处理每个文件的上传进度*/ uploader.bind('UploadProgress', function(up, file) {  $('#' + file.id + " b").html('<span>'+file.percent + "%</span>");  });  /**绑定事件:Error(uploader:Uploader, error:Object)**/ uploader.bind('Error', function(up, err) {   $('#error').append("<div>Error: " + err.code + ", Message: " + err.message +(err.file ? ", File: " + err.file.name : "") + "</div>");   up.refresh(); // Reposition Flash/Silverlight  });   /**绑定事件:FileUploaded(uploader:Uploader, file:File, response:Object)*当文件上传成功后,将进度条显示100%*/ uploader.bind('FileUploaded', function(up, file) {  $('#' + file.id + " b").html("100%");  });  /* *绑定事件:UploadFile(uploader:Uploader, file:File) *当单击上传按钮时,首先触发该事件,如果没有要处理的可以不添加该事件 */ uploader.bind('UploadFile',function(up,file){alert(file.name); });  //uploader.init();}); </script>Plupload API:http://www.plupload.com/plupload/docs/api/

/*上传文件Servlet后台简单处理*//*LIB目录下需要添加包commons-fileupload-1.2.jarcommons-io-1.4.jar*///判断上传表单是否为上传表单类型,即multipart/form-databoolean isMultipart = ServletFileUpload.isMultipartContent(req);public static final String UPLOADDIR="d:/test/";public static final int BUF_SIZE = 4096;if (isMultipart) {ServletFileUpload upload = new ServletFileUpload();try {FileItemIterator iter = upload.getItemIterator(req);while (iter.hasNext()) {//每一个item就代表一个表单输出项FileItemStream item = iter.next();//input名称String name = item.getFieldName();InputStream input = item.openStream();//判断input是否为普通表单输入项,如果不是说明是上传if (!item.isFormField()) {//得到上传文件的名称String oldName = item.getName();//为了确保文件名唯一,可以重新命名文件名称String newFileName = UUID.randomUUID().toString();if (oldName.lastIndexOf(".") != -1) {// 含有后缀String suffixName = oldName.substring(oldName.lastIndexOf(".")); // 后缀newFileName += suffixName;}File newFile = new File(UPLOADDIR + newFileName);BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(newFile));byte[] data = new byte[1024];int count;while ((count = input.read(data, 0, 1024)) != -1) {output.write(data, 0, count);}input.close();output.flush();output.close();}}} catch (Exception e) {e.printStackTrace();}}


原创粉丝点击