文章分类:Java编程

★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.javaeye.com/blog/255583 》 谢谢支持! ★★★

功能完全支持ie和firefox浏览器!同样也支持safari浏览器!

一般的WEB方式文件上传只能一个一个的进行上传,在某些应用上就显得很不人性化,客户们都希望能够1次选择很多文件,然后让系统把选择的文件全部上传。

这里,就将针对这个问题提出一个比较完美的解决方案,利用的技术主要有2个:Flash 和 smartupload。Flash 能够让客户一次选择多个文件,而smartupload负责将选择的文件上传到服务器上。

有些朋友看到这里,就知道了,其实就是swfupload方法,具体信息可以访问swfupload官方网站:http://www.swfupload.org/
让我们先来看看客户端的界面效果图。(多选文件,批量上传,上传进度显示)

要做到图中的效果,其实很方便,看完下面的描述,相信大家都可以实现上图中的效果了。
说明:swfupload2中通过一个png图片与flash插件进行关联,可以修改images下的png图片来(如上图中的[选择文件]图片)自定义显示自己想要的图片样子(不要修改图片名字和格式)。

如果你用的不是java环境,不要紧,只要稍作修改,同样可以使用在其他的环境中。

第1步,要进行下面的过程,必须先准备好Flash插件和smartupload。
Flash插件:相信大家的浏览器早已经安装过了,请检查版本,尽量使用最新的的flash插件。

smartupload:大家可以去看看我的另一篇文章 [上传下载组件SmartUpload使用方法] http://stephen830.javaeye.com/blog/255010 里面详细讲述了使用方法,并且提供了具体java类的下载。请先熟悉smartupload,然后再开始下面的步骤。

第2步,前台部分准备客户操作的WEB界面 ,如下[UploadFileExample.jsp、UploadFileExampleSubmit.jsp]

(关于参数 upload_url: "<%=uploadUrl.toString()%>",
要注意提交文件路径,最好用http://.../UploadFileExample.jsp格式的完整路径,即像我例子中写的那样)

UploadFileExample.jsp

Java代码  
  1. <%@ page contentType= "text/html;charset=UTF-8" %>
  2. <%
  3. double  perMaxSize =  1.5 ; //单个文件允许的max大小
  4. String sizeUnit = "MB" ; //perMaxSize数据对应的单位
  5. String ext = "*.jpg;*.jpeg;*.gif" ; //允许上传的文件类型
  6. //文件上传提交的目标页面
  7. StringBuffer uploadUrl = new  StringBuffer( "http://" );
  8. uploadUrl.append(request.getHeader("Host" ));
  9. uploadUrl.append(request.getContextPath());
  10. uploadUrl.append("/admin/swfuploadexample/UploadFileExampleSubmit.jsp" );
  11. %>
  12. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
  13. <html>
  14. <head>
  15. <title>批量相片上传</title>
  16. <meta http-equiv="Content-Type"  content= "text/html; charset=UTF-8" >
  17. <link href="css/default.css"  rel= "stylesheet"  type= "text/css"  />
  18. <script type="text/javascript"  src= "js/swfupload.js" ></script>
  19. <script type="text/javascript"  src= "js/swfupload.swfobject.js" ></script>
  20. <script type="text/javascript"  src= "js/swfupload.queue.js" ></script>
  21. <script type="text/javascript"  src= "js/fileprogress.js" ></script>
  22. <script type="text/javascript"  src= "js/handlers.js" ></script>
  23. <script type="text/javascript" >
  24. var swfu;
  25. SWFUpload.onload = function () {
  26. var settings = {
  27. flash_url : "js/swfupload.swf" ,
  28. upload_url: "<%=uploadUrl.toString()%>" ,
  29. post_params: {
  30. "user_id"  :  "stephen830" ,
  31. "pass_id"  :  "123456"
  32. },
  33. file_size_limit : "<%=perMaxSize%> <%=sizeUnit%>" ,
  34. file_types : "<%=ext%>" ,
  35. file_types_description : "<%=ext%>" ,
  36. file_upload_limit : 100 ,
  37. file_queue_limit : 0 ,
  38. custom_settings : {
  39. progressTarget : "fsUploadProgress" ,
  40. cancelButtonId : "btnCancel" ,
  41. uploadButtonId : "btnUpload" ,
  42. myFileListTarget : "idFileList"
  43. },
  44. debug: false ,
  45. auto_upload:false ,
  46. // Button Settings
  47. button_image_url : "images/XPButtonUploadText_61x22.png" ,    // Relative to the SWF file
  48. button_placeholder_id : "spanButtonPlaceholder" ,
  49. button_width: 61 ,
  50. button_height: 22 ,
  51. // The event handler functions are defined in handlers.js
  52. swfupload_loaded_handler : swfUploadLoaded,
  53. file_queued_handler : fileQueued,
  54. file_queue_error_handler : fileQueueError,
  55. file_dialog_complete_handler : fileDialogComplete,
  56. upload_start_handler : uploadStart,
  57. upload_progress_handler : uploadProgress,
  58. upload_error_handler : uploadError,
  59. upload_success_handler : uploadSuccess,
  60. upload_complete_handler : uploadComplete,
  61. queue_complete_handler : queueComplete, // Queue plugin event
  62. // SWFObject settings
  63. minimum_flash_version : "9.0.28" ,
  64. swfupload_pre_load_handler : swfUploadPreLoad,
  65. swfupload_load_failed_handler : swfUploadLoadFailed
  66. };
  67. swfu = new  SWFUpload(settings);
  68. }
  69. </script>
  70. </head>
  71. <body bgcolor="#FCFCFC"  topmargin= "0px"  leftmargin= "10px"  rightmargin= "10px"  scroll= "yes" >
  72. <table width="100%"  cellspacing= "4"  cellpadding= "4"  border= "0"  bgcolor= "#FCFCFC" >
  73. <tr>
  74. <td class = "DH1" >
  75. <table width="100%"  cellspacing= "4"  cellpadding= "4"  border= "0"  bgcolor= "#FCFCFC" >
  76. <tr>
  77. <td class = "DH2" >
  78. <STRONG>批量上传相片 (支持的相片类型:<%=ext%>;单个相片最大不能超过:<%=perMaxSize%> <%=sizeUnit%>)</STRONG>
  79. </td><td class = "DH2"  align= "right" ></td>
  80. </tr>
  81. </table>
  82. <div id="content" >
  83. <form id="form1"  action= "UploadFileExampleSubmit.jsp"  method= "post"  enctype= "multipart/form-data" >
  84. <table width="90%"  cellspacing= "0"  cellpadding= "0"  border= "0" ><tr><td>
  85. <span id="spanButtonPlaceholder" ></span>
  86. <input id="btnUpload"  type= "button"  value= "上传相片"   class = "btn"  />
  87. <input id="btnCancel"  type= "button"  value= "取消全部上传"  disabled= "disabled"   class = "btn"  /></td>
  88. </tr></table>
  89. <table id="idFileList"   class = "uploadFileList" ><tr  class = "uploadTitle" ><td><B> 文件名</B></td><td><B>文件大小</B>< /td><td width=100px><B>状态</B></td>< td width=35px>&nbsp;</td></tr></table>
  90. 等待上传 <span id="idFileListCount" > 0 </span> 个 ,成功上传 <span id= "idFileListSuccessUploadCount" > 0 </span> 个
  91. <div id="divSWFUploadUI"  style= "visibility: hidden;" ></div>
  92. <noscript style="display: block; margin: 10px 25px; padding: 10px 15px;" >
  93. 很抱歉,相片上传界面无法载入,请将浏览器设置成支持JavaScript。
  94. </noscript>
  95. <div id="divLoadingContent"   class = "content"  style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;" >
  96. 相片上传界面正在载入,请稍后...
  97. </div>
  98. <div id="divLongLoading"   class = "content"  style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;" >
  99. 相片上传界面载入失败,请确保浏览器已经开启对JavaScript的支持,并且已经安装可以工作的Flash插件版本。
  100. </div>
  101. <div id="divAlternateContent"   class = "content"  style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;" >
  102. 很抱歉,相片上传界面无法载入,请安装或者升级您的Flash插件。
  103. 请访问: <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"  target= "_blank" >Adobe网站</a> 获取最新的Flash插件。
  104. </div>
  105. </form>
  106. </div>
  107. </td></tr></table>
  108. </body>
  109. </html>
<%@ page contentType="text/html;charset=UTF-8"%>
<%double perMaxSize = 1.5;//单个文件允许的max大小String sizeUnit = "MB";//perMaxSize数据对应的单位String ext = "*.jpg;*.jpeg;*.gif";//允许上传的文件类型//文件上传提交的目标页面StringBuffer uploadUrl = new StringBuffer("http://");uploadUrl.append(request.getHeader("Host"));uploadUrl.append(request.getContextPath());uploadUrl.append("/admin/swfuploadexample/UploadFileExampleSubmit.jsp");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>批量相片上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/swfupload.js"></script>
<script type="text/javascript" src="js/swfupload.swfobject.js"></script>
<script type="text/javascript" src="js/swfupload.queue.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script><script type="text/javascript">
var swfu;SWFUpload.onload = function () {var settings = {flash_url : "js/swfupload.swf",upload_url: "<%=uploadUrl.toString()%>",post_params: {"user_id" : "stephen830","pass_id" : "123456"},file_size_limit : "<%=perMaxSize%> <%=sizeUnit%>",file_types : "<%=ext%>",file_types_description : "<%=ext%>",file_upload_limit : 100,file_queue_limit : 0,custom_settings : {progressTarget : "fsUploadProgress",cancelButtonId : "btnCancel",uploadButtonId : "btnUpload",myFileListTarget : "idFileList"},debug: false,auto_upload:false,// Button Settingsbutton_image_url : "images/XPButtonUploadText_61x22.png",   // Relative to the SWF filebutton_placeholder_id : "spanButtonPlaceholder",button_width: 61,button_height: 22,// The event handler functions are defined in handlers.jsswfupload_loaded_handler : swfUploadLoaded,file_queued_handler : fileQueued,file_queue_error_handler : fileQueueError,file_dialog_complete_handler : fileDialogComplete,upload_start_handler : uploadStart,upload_progress_handler : uploadProgress,upload_error_handler : uploadError,upload_success_handler : uploadSuccess,upload_complete_handler : uploadComplete,queue_complete_handler : queueComplete, // Queue plugin event// SWFObject settingsminimum_flash_version : "9.0.28",swfupload_pre_load_handler : swfUploadPreLoad,swfupload_load_failed_handler : swfUploadLoadFailed};swfu = new SWFUpload(settings);
}</script>
</head>
<body bgcolor="#FCFCFC" topmargin="0px" leftmargin="10px" rightmargin="10px" scroll="yes">
<table width="100%" cellspacing="4" cellpadding="4" border="0" bgcolor="#FCFCFC"><tr> <td class="DH1"><table width="100%" cellspacing="4" cellpadding="4" border="0" bgcolor="#FCFCFC"><tr><td class="DH2"><STRONG>批量上传相片 (支持的相片类型:<%=ext%>;单个相片最大不能超过:<%=perMaxSize%> <%=sizeUnit%>)</STRONG> </td><td class="DH2" align="right"></td></tr></table>
<div id="content"><form id="form1" action="UploadFileExampleSubmit.jsp" method="post" enctype="multipart/form-data"><table width="90%" cellspacing="0" cellpadding="0" border="0"><tr><td><span id="spanButtonPlaceholder"></span><input id="btnUpload" type="button" value="上传相片" class="btn" /><input id="btnCancel" type="button" value="取消全部上传" disabled="disabled" class="btn" /></td></tr></table><table id="idFileList" class="uploadFileList"><tr class="uploadTitle"><td><B>文件名</B></td><td><B>文件大小</B></td><td width=100px><B>状态</B></td><td width=35px>&nbsp;</td></tr></table>等待上传 <span id="idFileListCount">0</span> 个 ,成功上传 <span id="idFileListSuccessUploadCount">0</span> 个<div id="divSWFUploadUI" style="visibility: hidden;"></div><noscript style="display: block; margin: 10px 25px; padding: 10px 15px;">很抱歉,相片上传界面无法载入,请将浏览器设置成支持JavaScript。</noscript><div id="divLoadingContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">相片上传界面正在载入,请稍后...</div><div id="divLongLoading" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">相片上传界面载入失败,请确保浏览器已经开启对JavaScript的支持,并且已经安装可以工作的Flash插件版本。</div><div id="divAlternateContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">很抱歉,相片上传界面无法载入,请安装或者升级您的Flash插件。请访问: <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">Adobe网站</a> 获取最新的Flash插件。</div></form>
</div>
</td></tr></table>
</body>
</html>

UploadFileExample.jsp对应的处理页面 --> UploadFileExampleSubmit.jsp

(1)请确保已经看完我的另一篇文章(上传下载组件SmartUpload使用方法 http://stephen830.javaeye.com/admin/blogs/255010 ),先搞好这个才能开始下面的操作
(2)写一个对应上传方法类,com.soft4j.bo.PhotoMgr.java,其中的方法就是文章下面提到的public static String fileUpload(SmartUpload su,PageContext pageContext) throws Exception {...}

这2点弄好了,ok,可以继续。(如果没有准备java文件,下面的UploadFileExampleSubmit.jsp会报错)

注意在(UploadFileExampleSubmit.jsp)中:上传成功后必须返回“successed”,失败的话则返回失败的原因。

Java代码  
  1. <%@ page contentType= "text/html;charset=UTF-8" %><%@ page  import = "com.soft4j.httpupload4j.SmartUpload" %><%@ page  import = "com.soft4j.bo.PhotoMgr" %><%
  2. String pageErrorInfo = null ;
  3. SmartUpload su = null ;
  4. try {
  5. su = new  SmartUpload();
  6. su.initialize(pageContext);
  7. su.upload();
  8. pageErrorInfo = PhotoMgr.fileUpload(su,pageContext);
  9. if (pageErrorInfo== null ){
  10. out.print("successed" );
  11. }
  12. }catch (Exception e){
  13. pageErrorInfo = e.getMessage();
  14. }finally {
  15. su = null ;
  16. if (pageErrorInfo!= null ){
  17. out.print(pageErrorInfo);
  18. }
  19. }
  20. %>
<%@ page contentType="text/html;charset=UTF-8"%><%@ page import="com.soft4j.httpupload4j.SmartUpload"%><%@ page import="com.soft4j.bo.PhotoMgr"%><%String pageErrorInfo = null;SmartUpload su = null;try{su = new SmartUpload();su.initialize(pageContext);su.upload();pageErrorInfo = PhotoMgr.fileUpload(su,pageContext);if(pageErrorInfo==null){out.print("successed");}}catch(Exception e){pageErrorInfo = e.getMessage();}finally{su = null;if(pageErrorInfo!=null){out.print(pageErrorInfo);}}
%>

第3步 准备后台的文件上传功能。 也就是上面文件[UploadFileExampleSubmit.jsp]中用到的[PhotoMgr.fileUpload(su,pageContext)]方法。

Java代码  
  1. /**
  2. * 文件上传方法.
  3. * @param su
  4. * @param pageContext
  5. * @return
  6. * @throws Exception
  7. */
  8. public   static  String fileUpload(SmartUpload su,PageContext pageContext)  throws  Exception {
  9. com.soft4j.httpupload4j.File suFile = null ;
  10. int  fileCount =  0 ;
  11. try  {
  12. //获取传递过来的参数
  13. String userId = su.getRequest().getParameter("user_id" );
  14. String passId = su.getRequest().getParameter("pass_id" );
  15. String fileExt = "" ;
  16. int  fileSize =  0 ;
  17. String AllowedExtensions = ",jpg,jpeg,gif," ; //允许上传的文件类型
  18. double  maxFileSize =  1.5 * 1024 ; //单文件最大大小,单位KB
  19. //校验文件类型和大小
  20. for  ( int  i= 0 ; i<su.getFiles().getCount();i++) {
  21. suFile = su.getFiles().getFile(i);
  22. if  (suFile.isMissing())
  23. continue ;
  24. //校验文件大小
  25. fileSize = suFile.getSize()/1024 ; //字节转换成KB
  26. if (fileSize== 0 ) fileSize= 1 ;
  27. if (maxFileSize<fileSize)  throw   new  Exception( "单个上传相片的容量不能超过[" +maxFileSize+ "KB]" );
  28. //校验文件类型
  29. if  (suFile.getFileExt() ==  null
  30. || "" .equals(suFile.getFileExt())) {
  31. fileExt = ",," ;
  32. } else  {
  33. fileExt = ","  + suFile.getFileExt().toLowerCase() +  "," ;
  34. }
  35. if  (! "" .equals(AllowedExtensions)
  36. && AllowedExtensions.indexOf(fileExt) == -1 ) {
  37. throw   new  Exception( "您上传的文件["  + suFile.getFileName()
  38. + "]的类型为系统禁止上传的文件类型,不能上传!" );
  39. }
  40. fileCount++;
  41. }
  42. if  (fileCount== 0 )  throw   new  Exception( "请选择上传的文件" );
  43. //准备保存文件
  44. String filePath="D://tomcat//webapps//test//photo//" ; //这里填写项目中存放上传文件的物理路径
  45. for  ( int  i= 0 ; i<su.getFiles().getCount();i++) {
  46. suFile = su.getFiles().getFile(i);
  47. suFile.saveAs(filePath+suFile.getFileName(),SmartUpload.SAVE_PHYSICAL);//保存文件
  48. }
  49. //成功返回null
  50. return   null ;
  51. } finally  {
  52. //
  53. }
  54. }
/*** 文件上传方法.* @param su* @param pageContext* @return* @throws Exception*/public static String fileUpload(SmartUpload su,PageContext pageContext) throws Exception {com.soft4j.httpupload4j.File suFile = null;int fileCount = 0;try {//获取传递过来的参数String userId = su.getRequest().getParameter("user_id");String passId = su.getRequest().getParameter("pass_id");String fileExt = "";int fileSize = 0;String AllowedExtensions = ",jpg,jpeg,gif,";//允许上传的文件类型double maxFileSize = 1.5*1024;//单文件最大大小,单位KB//校验文件类型和大小for (int i=0; i<su.getFiles().getCount();i++) {suFile = su.getFiles().getFile(i);if (suFile.isMissing())continue;//校验文件大小fileSize = suFile.getSize()/1024;//字节转换成KBif(fileSize==0) fileSize=1;if(maxFileSize<fileSize) throw new Exception("单个上传相片的容量不能超过["+maxFileSize+"KB]");//校验文件类型if (suFile.getFileExt() == null|| "".equals(suFile.getFileExt())) {fileExt = ",,";} else {fileExt = "," + suFile.getFileExt().toLowerCase() + ",";}if (!"".equals(AllowedExtensions)&& AllowedExtensions.indexOf(fileExt) == -1) {throw new Exception("您上传的文件[" + suFile.getFileName()+ "]的类型为系统禁止上传的文件类型,不能上传!");}fileCount++;}if (fileCount==0) throw new Exception("请选择上传的文件");//准备保存文件String filePath="D://tomcat//webapps//test//photo//";//这里填写项目中存放上传文件的物理路径for (int i=0; i<su.getFiles().getCount();i++) {suFile = su.getFiles().getFile(i);suFile.saveAs(filePath+suFile.getFileName(),SmartUpload.SAVE_PHYSICAL);//保存文件}//成功返回nullreturn null;} finally {//}}

备注:关于jsp页面和java方法我不做过多的说明了,应该已经比较清楚了。

本文自发布后,受到了很多朋友的关注,也为不少的朋友提供了帮助,我很高兴。
下面将朋友们遇到的一些问题作汇总后需要注意的一些地方列了出来:

<1> 功能实现需要flash插件支持。
flash版本为 flash 9.0.124 或者 flash 10.0.12.36 版本(这是最新的flash10插件). 如果不是的话,可以去flash官网 http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash 进行在线安装。

<2> UploadFileExample.jsp 中的 upload_url参数设置。
参数需要使用 http://....../UploadFileExampleSubmit.jsp 这样的完整路径.

<3> 关于获取参数 post_params中的参数值。
post_params: {"user_id" : "stephen830","pass_id" : "123456"} 中的参数,不能使用普通的request.getParameter("")方法来获取,
而必须用你的上传方法对应的特定方法来获取,比如,我这里用smartupload,则获取方法就是String userId = su.getRequest().getParameter("user_id");

<4> 上传后不管成功还是失败,都需要有返回值。
这个返回值将传递到对应js中。返回值在UploadFileExampleSubmit.jsp中设置,成功则 out.print("successed"); 失败则 out.print(pageErrorInfo);//pageErrorInfo为错误信息。

该返回值将传递给js目录下的handlers.js文件,具体的方法是 function uploadSuccess(file, serverData) {...} 。

有些朋友的上传成功后out.print("successed"); 发现js收到的"successed"前面会有隐藏字符,遇到这种情况可以更改function uploadSuccess(file, serverData) {...} 中的
var isSuccess = (serverData.indexOf("successed")==0?true:false);
改为
var isSuccess = (serverData.indexOf("successed")>-1?true:false);
就可以了。

附录:swfupload 文件批量上传压缩包 swfupload.zip(支持最新的flash10插件) (附件中没有java类,请自己准备1个java类,将上面的方法复制进去)
为方便了解和调试功能,在附件中增加了一个完整的工程Example,附件名(PROJECT_swfupload.zip),大家可以直接使用来测试功能。

  • PROJECT_swfupload.zip (99.3 KB)
  • 下载次数: 3
  • swfupload.zip (44.4 KB)
  • 下载次数: 2

SWFUpload上传相关推荐

  1. SWFUpload上传文件组件,跨域上传文件

    转自: http://zhaowenbinmail.blog.163.com/blog/static/3908086201042743942935/ 解决SWFUpload上传文件组件使用时报告204 ...

  2. 使用SWFUpload上传文件

    什么是SWFUpload SWFUpload是一个网站前端文件上传组件.SWFUpload通过flash+javascript,实现在不刷新网页的条件下,多个文件批量上传(实际上是逐个上传).以及显示 ...

  3. IE10不显示swfupload上传附件按钮问题

    IE11正常显示swfupload上传附件按钮,但是IE10不显示,遇到浏览器兼容问题,只需改swfupload.js文件中一些代码即可. 搜索寻找到 Private: getFlashHTML ge ...

  4. SWFUpload上传指南

    SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在项目中用过几次,但它的配置参数太多了,用过后就忘记怎么用了,到以后要用时又得到官网上看它的文档,真是太烦了.所以 ...

  5. SWFupload上传插件案例及头像的截取

    记录一下这个上传插件的使用方法吧,以后项目中肯定会用到,到时候可以拿来用.一些属性什么的就不贴了. 流程: 1.引入相应的js文件 .这里还用了imgareaselect插件.代码中注释部分是未使用i ...

  6. 关于 swfupload 上传的一些总结

    上传是在WEB程序中比较常见的类型,作为WEB上传,由于PHP.ini配置限制,上传大小都不宜过大,一般在10M以内,在客户体验上就不适合单用HTTP方式上传了,在10M以上文件上传由于需要一定的等待 ...

  7. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  8. Flash上传组件之SWFUpload文件上传

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是SWFUpload? SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合F ...

  9. Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题

    我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jquery form.js可以达到异步上传的目的,但最重要的问题在于,它不能够进行多个文件的上传 ...

最新文章

  1. Waymo向客户发邮件,宣布纯无人驾驶汽车即将上路
  2. Java运行作业控制语言_Java安全——语言本身的设计
  3. 无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件...
  4. mysql 5.7 的组复制
  5. qtdesigner设计表格_QT Designer基础——登录界面设计基础版
  6. 从数据的角度解析计算机的发展,2017计算机知识考前冲刺试题及答案
  7. 联想即将推出预装 Fedora 的 ThinkPad 笔记本电脑
  8. ASP.Net页面保存持久数据的几种方法比较
  9. [csp-201809-4]再卖菜 差分约束or记忆化搜索
  10. EDA 课程设计 实验报告及源文件
  11. python教学反思_Python语言教学反思
  12. 1.决策树 实例:泰坦尼克号幸存者的预测
  13. offline translator android app,PROMT Offline Translator English Pack
  14. 牛客 数据库SQL实战 将titles_test表名修改为titles_2017
  15. sketch android 切图,Sketch如何快速切图?三分钟教你掌握切图方案
  16. springboot实现从数据库导出数据到Excel表格中(完整代码)
  17. ORA-01017:用户名/口令无效,登录被拒绝(ORA-01017: invalid username/password; logon denied)
  18. 【案例】Shazam识别音乐
  19. 【Java】使用idea打jar包
  20. AKM项目轶事之Ambition研讨会

热门文章

  1. ALDownloadManager 基于Alamofire封装的下载器
  2. Linux centos 安装VNC 服务过程
  3. Varnish 4.0.3详细配置
  4. 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考
  5. 在ASP.Net中如何彻底杀死Excel进程
  6. 学会感恩会使你回报的更多!
  7. 令人郁闷的 DOCTYPE
  8. react进阶系列 - 高阶组件详解四:高阶组件的嵌套使用
  9. 利用ngxtop实时监控nginx的访问情况
  10. Android EditText常见方法总结