struts开发组件自动上传文件如何传入表单参数?
在struts 项目中 ,想在jsp 页面用组件(如:uploadify)自动上传文件(如:图片,表格等)时,传入form 表单,
后台 action 接收时用 ActionForm form作为参数,然后直接调用 struts 的封装 上传的方法:
List<UploadFile> uploadFileList = super.uploadFile(form, false);
这样 就能直接 获取要上传的文件了:
PS:拜托大神了,限 今晚,在线等 QQ:541059135
1.FileUploadServlet源代码
package com.oryx.upload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
public class FileUploadServlet extends HttpServlet {
public FileUploadServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
request.setCharacterEncoding("utf-8");
RequestContext context = new ServletRequestContext(request);
String tmpdir = "d:/tmp/";//所放位置
if (FileUpload.isMultipartContent(context)) {//判断request中是否包含"multipart/form-data"
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(tmpdir));//设置临时文件路径
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(400000000);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
System.out.println("文件上传发生错误" + e.getMessage());
}
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
if (fileItem.isFormField()) {
//判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,
//如果是普通表单字段则返回true,否则返回false。
System.out.println("FieldName:"
+ fileItem.getFieldName()
+ " Name:"
+ fileItem.getName()
+ " Code:"
+ new String(fileItem.getString().getBytes(
"iso8859-1"), "utf-8"));
} else {
System.out.println("FieldName:" + fileItem.getFieldName()
+ " Name:" + fileItem.getName() + " IsInMemory:"
+ fileItem.isInMemory() + " ContentType:"
+ fileItem.getContentType() + " Size:"
+ fileItem.getSize());
if(fileItem.getName()!= null&&fileItem.getSize()!=0){
File srcFile = new File(fileItem.getName());//源文件
File destFile = new File("d:/temp/"+srcFile.getName());//目标文件
try {
fileItem.write(destFile);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("没有选择文件或文件内容为空!");
}
}
}
String url = "/oryx/jsp/util/sucess.jsp";
response.sendRedirect(url);
}
}
public void init() throws ServletException {
// Put your code here
}
}
2.upload.jsp源代码
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
<head>
<title>文件上传2</title>
</head>
<%
String contextPath = request.getContextPath();
%>
<body>
<FORM name="form1" action="<%=contextPath%>/com/oryx/upload/FileUploadServlet" enctype="multipart/form-data" method="POST">
选择文件:<input type="file" name="myfile" />
<input type="submit" value="上传">
</FORM>
</body>
</html>
注:enctype="multipart/form-data" 一定要写。
3.在Web.xml中配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>com.oryx.upload.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/com/oryx/upload/FileUploadServlet</url-pattern>
</servlet-mapping>
</web-app>
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?