|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。js|上传大概好工具就是必要渐渐地往发明和总结的.
之前我写的JSP体系都是接纳JspSmartUpload组件来办理的.
头几天客户赞扬说,上传年夜文件的时分,扫瞄器无反响,乃至会溃散.叫我协助办理一下并加上上传进度暗示(这个临时不表,有必要的可加我MSN:info@hkeb.com).
当即google,baidu一下,才知JSpSmartUpload合用于对照小文件的时分,而假如上传年夜文件的时分还得数commonsFileUpload组件.
在网上翻阅了有数篇关于这个东东的资讯.基础上每篇资讯都迥然不同.这也难怪,网上的工具都是转来转往的.
上传文件是办理了,可是表单上的其他文本域参数却不晓得怎样吸收.直查得我头破血流,费了一二周都没办理.
由于全体的文章都没有提到怎样办理表单的其他文本数据.
直到明天才查得一个对照可行的举措.
1:假如要传参,数据量不是太年夜的话,能够用get的带参办法.即formaction里的upload.jsp前面跟上参数.
比方:upload.jsp?id=1&bid=2&uid=somebody
表单的范例稳定.如许在upload.jsp处置上传文件数据之前能够用request.getParameter("id")来猎取参数.
这是一种在传参的数据量不年夜的情形之下对照可行的办法.
2:假如的确没有举措,必需跟文件域一同提交到上传组件里处置.据网友所说.能够接纳以下代码处置.
publicMultipartHttpServletRequestresolveMultipart(HttpServletRequestrequest)throwsMultipartException{
DiskFileUploadfileUpload=this.fileUpload;
Stringenc=determineEncoding(request);
//useprototypeFileUploadinstanceiftherequestspecifies
//itsownencodingthatdoesnotmatchthedefaultencoding
if(!enc.equals(this.defaultEncoding)){
fileUpload=newDiskFileUpload();
fileUpload.setSizeMax(this.fileUpload.getSizeMax());
fileUpload.setSizeThreshold(this.fileUpload.getSizeThreshold());
fileUpload.setRepositoryPath(this.fileUpload.getRepositoryPath());
fileUpload.setHeaderEncoding(enc);
}
try{
ListfileItems=fileUpload.parseRequest(request);
Mapparameters=newHashMap();
MapmultipartFiles=newHashMap();
for(Iteratorit=fileItems.iterator();it.hasNext();){
FileItemfileItem=(FileItem)it.next();
if(fileItem.isFormField()){
Stringvalue=null;
try{
value=fileItem.getString(enc);
}
catch(UnsupportedEncodingExceptionex){
logger.warn("Couldnotdecodemultipartitem"+fileItem.getFieldName()+
"withencoding"+enc+":usingplatformdefault");
value=fileItem.getString();
}
String[]curParam=(String[])parameters.get(fileItem.getFieldName());
if(curParam==null){
//simpleformfield
parameters.put(fileItem.getFieldName(),newString[]{value});
}
else{
//arrayofsimpleformfields
String[]newParam=StringUtils.addStringToArray(curParam,value);
parameters.put(fileItem.getFieldName(),newParam);
}
}
else{
//multipartfilefield
CommonsMultipartFilefile=newCommonsMultipartFile(fileItem);
multipartFiles.put(file.getName(),file);
if(logger.isDebugEnabled()){
logger.debug("Foundmultipartfile["+file.getName()+"]ofsize"+file.getSize()+
"byteswithoriginalfilename["+file.getOriginalFilename()+"],stored"+
file.getStorageDescription());
}
}
}
/*****注重parameters就是一般的text之类的字段的值*****/
returnnewDefaultMultipartHttpServletRequest(request,multipartFiles,parameters);
}
catch(FileUploadBase.SizeLimitExceededExceptionex){
thrownewMaxUploadSizeExceededException(this.fileUpload.getSizeMax(),ex);
}
catch(FileUploadExceptionex){
thrownewMultipartException("Couldnotparsemultipartrequest",ex);
}
}
利用办法是:
MultipartHttpServletRequestmultipartRequest=(MultipartHttpServletRequest)request;
然后就可以一般读取参数:
multipartRequest.getParameter("xxx");
行不可,能不克不及猎取到,我没有往考证,有考证乐成的告诉小弟一声,不堪感谢.
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! |
|