a.jsp传到action中去我找了一下 但是测试都有问题
我以前做的上传都是a.jsp到 b.jsp都是功能页面在jsp页面中,现在用放到action中
该怎么做啊
a.jsp到 b.jsp 的做法中,那个
SmartUpload su = new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限制
1、这里的su.initialize(pageContext); 说的是初始化,但是pageContext是什么意识啊
我在action中 要报 pageContext 未定义 请问这个该怎么该了?2、我在http://community.csdn.net/Expert/topic/5735/5735120.xml?temp=.5600855这个帖中看到的方法,但是到他的action中的时候就不能运行了
但是可以得到 上传文件的路径了传过来的数据接收到了急急急,下午要完成,谢谢
可以帖代码嘛
测试就结贴
我以前做的上传都是a.jsp到 b.jsp都是功能页面在jsp页面中,现在用放到action中
该怎么做啊
a.jsp到 b.jsp 的做法中,那个
SmartUpload su = new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限制
1、这里的su.initialize(pageContext); 说的是初始化,但是pageContext是什么意识啊
我在action中 要报 pageContext 未定义 请问这个该怎么该了?2、我在http://community.csdn.net/Expert/topic/5735/5735120.xml?temp=.5600855这个帖中看到的方法,但是到他的action中的时候就不能运行了
但是可以得到 上传文件的路径了传过来的数据接收到了急急急,下午要完成,谢谢
可以帖代码嘛
测试就结贴
FormFile file = uploadFileForm.getFile(); 为null为什么啊
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 com.huadu.actionform.UploadActionForm;
import org.apache.struts.upload.FormFile;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class UploadAction extends Action {
public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest request,HttpServletResponse response) throws Exception { //WebFun getName = new WebFun();
UploadActionForm uploadFileForm = (UploadActionForm) actionForm; //uploadForm是FormBean
FormFile file = uploadFileForm.getFile(); //那个重要的类
System.out.println(uploadFileForm.getFile()); 为什么这里是空啊
String fName = file.getFileName(); //获得文件名
InputStream streamIn = null; //输入输出流
OutputStream streamOut = null;
String sysroot = servlet.getServletContext().getRealPath("userinfo"); //获取图片文件夹路径
String filePath = sysroot + "\\" + "89"; //最终路径
try {
streamIn = file.getInputStream(); //以下是上传的代码,不用变,固定的
streamOut = new FileOutputStream(filePath);
int bytesRead = 0;
byte[] buffer = new byte[20480];
while ( (bytesRead = streamIn.read(buffer, 0, 20480)) != -1) {
streamOut.write(buffer, 0, bytesRead);
}
streamOut.close();
streamIn.close();
request.setAttribute("info", "上传成功啦");
return actionMapping.findForward("fail");
}
catch (FileNotFoundException e) {
request.setAttribute("error", "上传失败啦");
e.printStackTrace();
return actionMapping.findForward("fail");
}
catch (IOException e) {
// TODO 自动生成 catch 块
request.setAttribute("error", "上传失败啦");
e.printStackTrace();
return actionMapping.findForward("fail");
}
}
}
这个我action中的 什么地方错了吗?
------------------
actionfrom
private String fileName;
private FormFile file;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}-----------
上传: <input type="FILE" name="fileName" size="30"><input type="submit" value="提交">
页面 的什么地方错了嘛
<input type="FILE" name="fileName" size="30"> 我把name="fileName"改成file会暴错
是不是表单的 enctype属性没有设置成multipart/form-data
比如:<form action="addad_do.jsp" method="post" enctype="multipart/form-data">
代码如下
<form name="formm" action="/UploadAction.do" enctype="multipart/form-data">
找file属性去。
在actionform中也有设置file
<input type="FILE" name="fileName" size="30"> 我把name="fileName"改成file会暴错<input type="FILE" name="file"> name是应该改为"file",因为actionfrom里已经有file属性了,只不是不知道你改成这样以后报了什么错?
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.IllegalArgumentException: argument type mismatch
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
我没这个文件啊
这个是到struts的
import org.apache.struts.upload.FormFile;
这句会不会有错?uploadFileForm.getFile().getFileName();试试
一提交就会暴那个错
根本就过不去
而且我用你说的那样
一样就暴错,说不能从String类型转成FormFile类型的
FormFile file = uploadFileForm.getFile(); //那个重要的类
//要是在哪儿加就暴错
System.out.println(uploadFileForm.getFile().getFileName());
form也改为<html:form>
用struts标签试试
属性名是fileName,因为struts会根据属性名fileName去找相应的get,set方法处理数据,而不是对应的属性file,即找到setFileName()和getFileName()来存取数据,
你可以在work目录下面找到相对应的jsp编译后*_jap.java文件的代码调查一下struts的工作原理,或者分析一下源代码
那个还是null
另外
a.jsp到 b.jsp 的做法中,那个
SmartUpload su = new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限制
1、这里的su.initialize(pageContext); 说的是初始化,但是pageContext是什么意识啊
我在action中 要报 pageContext 未定义 请问这个该怎么该了?
我是页面到页面的做法可以
但是放到java文件中就不暴未定义啊
su.initialize(pageContext);
该怎么去设置?
这个在struts中到底该怎么样去初始化了?
SmartUpload uploader=new SmartUpload();
try{
uploader.initialize(this.getServlet().getServletConfig(),request,response);//初始化
uploader.setMaxFileSize(302400000);
uploader.setAllowedFilesList("jpg,gif,JPG,GIF");
uploader.upload(); String fileName = uploader.getFiles().getFile(0).getFileName(); ////获取文件名
System.out.println(fileName);
String fileExt = uploader.getFiles().getFile(0).getFileExt(); ////获取文件名
//System.out.println(fileExt+"--c<br>"+getName.Name_upload());
path += "20070830"+"."+fileExt;//完整文件名
System.out.println(path);
System.out.println("<br>"+path);
uploader.getFiles().getFile(0).saveAs(path);//保存在容器目录下 System.out.print("上传成功");
System.out.print("上传成功");
return actionMapping.findForward("fail");
} catch (Exception e) {
System.out.println(e);
System.out.print("上传失败ss");
} return actionMapping.findForward("fail");
}在看这个有什么问题
为什么到
uploader.upload();
就不能执行了啊
暴错为:
java.lang.NegativeArraySizeException
上传失败ss
FormFile file = uploadFileForm.getFile(); 为null
好像是我页面设置的那个上传
<input type="FILE" name="fileName" size="30"> 中的name和actionform中的不一样
没有接收的所以为null
但是我要是设置成一样就要暴
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.IllegalArgumentException: argument type mismatch
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
错
找了好多资料 都是设置成一样的 但是没人说有暴错信息出现
这个错该怎么解决啊
我现在是用标签做就不会有上面的问题 String path="uploads/";
UploadActionForm uploadActionForm =(UploadActionForm) actionForm;
SmartUpload uploader=new SmartUpload();
System.out.println(uploadActionForm.getFileName());
System.out.println(uploadActionForm.getPicnum());
try{
uploader.initialize(this.servlet.getServletConfig(),request,response);//初始化
uploader.setMaxFileSize(302400000);
uploader.setAllowedFilesList("jpg,gif,JPG,GIF");
uploader.upload(); String fileName = uploader.getFiles().getFile(0).getFileName(); ////获取文件名
System.out.println(fileName);
String fileExt = uploader.getFiles().getFile(0).getFileExt(); ////获取文件名
//System.out.println(fileExt+"--"+getName.Name_upload());
path += "20070830"+"."+fileExt;//完整文件名
System.out.println(path);
uploader.getFiles().getFile(0).saveAs(path);//保存在容器目录下 System.out.print("上传成功");
System.out.print("上传成功");
return actionMapping.findForward("fail");
} catch (Exception e) {
System.out.println(e);
System.out.print("上传失败sss");
} return actionMapping.findForward("fail");
}这是我的代码
现在运行到 uploader.upload();这一布就不行了,cpu马上90%多
不在向下运行
请问这个怎么解决啊?
在网上查资料的时候看到一个说法是:jspsmartupload不能用在sturts的action做上传
是嘛?
用那个始终不能上传uploader.upload();就不能在向下运行了
实在不好意思 这几天没来 才看到你的帖子
我用的上传是struts自带的 上传代码很简单 就那几句 用smartupload 你试试下面这个初始化方法
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
SmartUpload upload = new SmartUpload();upload.initialize(config, request, response);
解决了 我还是用的struts自己带的上传做了
初始话我知道了
uploader.initialize(this.servlet.getServletConfig(),request,response);//初始化
那几天在网上找了好了关于用jspsmartupload做上传的
但找到的都是是说jspsmartupload不能用在sturts的action做上传但不知道是不是真的 但是我测试就到uploader.upload();就不能在向下运行了 cpu 100%
- -!
这几天忘了进 现在结贴 谢 大家了