关于servletfileupload的信息
在servlet中怎样上传文件?
//新建一个Smartupload对象
SmartUpload su=new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限度
//1.限定每个上传文件的最大长度
//su.setMaxFileSize(100000);
//2.限制总上传数据的长度。
//su.setTotalMaxFileSize(20000);
//3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
//su.setAllowFilesList("doc,text");
//4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件或没有扩展名的文件
//su.setDeniedDilesList("exe,bat,jsp,html,htm,,");
//上传文件
su.upload();
//将上传文件全部保存到指定目录
int count=su.save("/upload");
out.println(count+"个上传文件成功!br");
//利用Request对象获取参数之值
out.println("test="+su.getRequest().getParameter("test")+"brbr");
//逐一提取上传文件信息,同时可保存文件。
for(int i=0;isu.getFiles().getCount();i++)
{
com.jspsmart.upload.File file=su.getFiles().getFile(i);
//若文件不存在则继续
if(file.isMissing())
continue;
//显示当前文件信息
out.println("table border=1");
out.println("trtd表单项名(FiledName)/tdtd"+file.getFieldName()+"/tr/tr");
out.println("trtd文件长度(Size)/tdtd"+file.getSize()+"/tdtd");
out.println("trtd文件名(FileName)/tdtd"+file.getFileName()+"/tr/tr");
out.println("trtd文件扩展名(FiledExt)/tdtd"+file.getFileExt()+"/tr/tr");
out.println("trtd文件全名(FiledPathName)/tdtd"+file.getFilePathName()+"/tr/tr");
out.println("/tablebr");
//将文件另存
//file.saveAs("/upload/"+myFile.getFileName());
//另存到以web应用程序的根目录为文件根目录的目录下
//file.saveAs("/upload/"+myFile.getFileName(),su.SAVE_VIRTUAL);
//另存到操作系统的根目录为文件根目录的目录下
//file.safeAs("c://temp//"+myFile.getFileName(),su.SAVE_PHYSICAL);
}
上面就是了。。。。祝你好运哈!

servletfileupload类没有parsereqest方法,怎么办
解决办法如下
重写struts2拦截器对request的parser操作,具体实现如下
1)在struts2.xml里面定义,class是自定义的类,里面可以什么都没有,但一定要重新parser函数。里面不写任何东西
2)在struts2xml定义一个常量。
解决办法2:
修改web xml里面struts2拦截器配置,将mapping映射改为action
还有一种不算是解决办法,可能你的请求表单里面有个name名为名为name,目前未发现这种问题,重新定义下这个name。
struts上传为空的原因是struts2拦截器对混合表单进行拦截,将混合表单的request转换为了普通表单的请求。
java使用ServletFileUpload上传文件,ServletFileUpload.parseRequest(request)报错。
操作不允许,/trs/apache-tomcat-7.0.37/yy/kjcg/uploadtmp/upload__bf6b7e9_14520c5a8b9__8000_00000000.tmp不能创建。查查tomcat所属用户的/trs/apache-tomcat-7.0.37/yy/kjcg/uploadtmp目录写权限
servlet上传图片路径问题
你是想保存在项目的文件夹里面吗?不知道你有没有用Struts,如果只是单纯的servlet的话可以用下面的语句获取到真实路径:
ServletContext app = super.getServletContext(); ?// 调用父类 GenericServlet 的 getServletContext() 方法
app.getRealPath("/") ?// 取得真实路径
this.getServletContext().getRealPath("/") ?// 也是真实路径
如果是Struts2则就这样写:
ActionContext?ac?=?ActionContext.getContext(); ??
ServletContext?sc?=?(ServletContext)?ac.get(ServletActionContext.SERVLET_CONTEXT); ??
String?path?=?sc.getRealPath("/");
祝你成功~~
ServletFileUpload.isMultipartContent(request)作用
作用有两个:
1、用于检测是否一个文件上传的请求。在fileupload包实现上传项目前,需要解析一个http请求,为了确保这个请求的确是一个正确的上传文件,所以组件FileUpload提供了这样一个静态的方法。
2、用于判断是普通表单,还是带文件上传的表单,起了辨别的作用。若返回值为true则是带文件上传的表单;返回值为false则是普通表单。
扩展资料
在fileupload中, http请求中的复杂表单元素都会被看作一个FileItem对象,而且FileItem对象必须由ServletFileUpload类中的parseRequest()方法去解析HTTP请求;
再者,ServletFileUpload对象的创建需要依赖于FileItemFactory工厂而获得的上传文件FileItem对象保存至服务器硬盘,也就是指DiskFileItem对象。
参考资料来源:百度百科-fileupload
在JSP中,创建ServletFileUpload对象的方法是
这个需要在jsp页面中引入import org.apache.commons.fileupload.*;
然后直接用里面的ServletFileUpload构造方法来实例化这个对象。
比如可以这么写:
ServletFileUpload upload = new ServletFileUpload(diskFactory);
try{
DiskFileItemFactory diskFactory = new DiskFileItemFactory();
// threshold 极限、临界值,即硬盘缓存 1M
diskFactory.setSizeThreshold(4 * 1024);
// repository 贮藏室,即临时文件目录
diskFactory.setRepository(new File(tempPath));
ServletFileUpload upload = new ServletFileUpload(diskFactory);
// 设置允许上传的最大文件大小 4M
upload.setSizeMax(4 * 1024 * 1024);
// 解析HTTP请求消息头
List fileItems = upload.parseRequest(req);
Iterator iter = fileItems.iterator();
while(iter.hasNext())
{
FileItem item = (FileItem)iter.next();
if(item.isFormField())
{
System.out.println("处理表单内容 ...");
processFormField(item, pw);
}else{
System.out.println("处理上传的文件 ...");
processUploadFile(item, pw);
}
}// end while()
pw.close();
}catch(Exception e){
System.out.println("使用 fileupload 包时发生异常 ...");
e.printStackTrace();
}// end try ... catch ...