==========在SSH框架中如何使用jspsmartupload上传文件======== jsp中使用enctype="multipart/form-data" 提交了表单,但在action中用 up.initialize(getServlet(),request, response)中获取不到servletcinfig,试了很多种方法都不行,请各位高手帮忙解决,谢谢了!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有struts 还用纯 jspsmartupload 干嘛? Struts 直接 FileForm 不就行了 在struts1.x中有FileForm类:请看我整理的运行通过了:多文件上传:jsp代码:<html:form action="/multiupload" enctype="multipart/form-data">文件一:<input type="file" name="file0"/><br>文件二:<input type="file" name="file1"/><br><html:submit value="上传"/><html:cancel/>actionForm代码:package com.amaker.form;import java.util.List;import org.apache.struts.action.ActionForm;public class FileUploadForm extends ActionForm { private List myfiles; public List getMyfiles() { return myfiles; } public void setMyfiles(List myfiles) { this.myfiles = myfiles; } }action代码:package com.amaker.action;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.Collection;import java.util.Hashtable;import java.util.Iterator;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.upload.FormFile;import org.apache.struts.upload.MultipartRequestHandler;public class MultipartFileUploadAction extends Action { public ActionForward execute(ActionMapping arg0, ActionForm form, HttpServletRequest arg2, HttpServletResponse arg3) throws Exception { MultipartRequestHandler multipartRequestHandler = form .getMultipartRequestHandler(); Hashtable elements = multipartRequestHandler.getFileElements(); Collection values = elements.values(); int k = 0; InputStream in = null; OutputStream out = null; for (java.util.Iterator m = values.iterator(); m.hasNext(); k++) { FormFile file = (FormFile) m.next(); String fileName = file.getFileName(); in = file.getInputStream(); String path = this.servlet.getServletContext().getRealPath( "\\upload"); out = new FileOutputStream(path + "\\" + fileName); System.out.println("你上传的文件的全路径:" + path + "\\" + fileName); byte[] buffer = new byte[in.available()]; in.read(buffer); out.write(buffer); out.close(); in.close(); } return arg0.getInputForward(); }} 主要是在spring框架中获取不到表单传过来的数据流~~~ struts中已经有个FormFile了,直接用它就行了,简单得多! 4楼的兄弟传的代码把String path = this.servlet.getServletContext().getRealPath( "\\upload"); 改成String path=request.getSession().getServletContext().getRealPath("/upload");能用,就是如果只传一个图片就报错,很奇怪啊~~ 额,找到原因了,呵呵~只要在JSP里删一个<input type="file" name="file1"/>就不报错了~~ fileupload已经够好用了,为什么还要用那个呢?去试试吧。 既然都已经在用ssh了,有现成的commons-fileupload不用去用一个更差的smartupload~````` java 如何解决 OutOfMemory cannot be cast to java.lang.Integer ajax无刷新更该页面值!无法更新数据,急啊! 【100分】网站在本机调试可以,为什么传到空间服务商那就不行了,谁来帮帮我????????????????????????? 关于统计记录个数和累加记录值的问题 java做网站,在架构上,求教高手 调用realplayer?急!! 为什么tomcat下action事件没有执行? 请问怎样弹出一个模式窗口?什么是模式窗口?? 请教一个spirng自动注入失败的问题 jsp制作论坛 在struts2.0中运用Ajax的问题
多文件上传:
jsp代码:
<html:form action="/multiupload" enctype="multipart/form-data">
文件一:<input type="file" name="file0"/><br>
文件二:<input type="file" name="file1"/><br>
<html:submit value="上传"/><html:cancel/>
actionForm代码:
package com.amaker.form;import java.util.List;import org.apache.struts.action.ActionForm;public class FileUploadForm extends ActionForm { private List myfiles; public List getMyfiles() {
return myfiles;
} public void setMyfiles(List myfiles) {
this.myfiles = myfiles;
}
}
action代码:
package com.amaker.action;import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.apache.struts.upload.MultipartRequestHandler;public class MultipartFileUploadAction extends Action { public ActionForward execute(ActionMapping arg0, ActionForm form,
HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
MultipartRequestHandler multipartRequestHandler = form
.getMultipartRequestHandler();
Hashtable elements = multipartRequestHandler.getFileElements(); Collection values = elements.values();
int k = 0;
InputStream in = null;
OutputStream out = null;
for (java.util.Iterator m = values.iterator(); m.hasNext(); k++) { FormFile file = (FormFile) m.next();
String fileName = file.getFileName();
in = file.getInputStream();
String path = this.servlet.getServletContext().getRealPath(
"\\upload");
out = new FileOutputStream(path + "\\" + fileName);
System.out.println("你上传的文件的全路径:" + path + "\\" + fileName);
byte[] buffer = new byte[in.available()];
in.read(buffer);
out.write(buffer);
out.close();
in.close();
}
return arg0.getInputForward(); }
}
String path = this.servlet.getServletContext().getRealPath( "\\upload");
改成
String path=request.getSession().getServletContext().getRealPath("/upload");
能用,就是如果只传一个图片就报错,很奇怪啊~~
去试试吧。