原文地址:http://www.iteye.com/topic/1121677
Struts2文件上传,基本的配置如下:
UploadFileAction
- package jp.co.ricoh.action.upload;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Date;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class FileUploadAction extends ActionSupport {
- /**
- *
- */
- private static final long serialVersionUID = 7944571812664822722L;
- private static final int BUFFER_SIZE = 16 * 1024;
- private File file;
- private String contentType;
- private String fileName;
- private String imageFileName;
- private String caption;
- public File getFile() {
- return file;
- }
- public void setFile(File file) {
- this.file = file;
- }
- public String getFileContentType() {
- return contentType;
- }
- public void setFileContentType(String contentType) {
- this.contentType = contentType;
- }
- public String getFileFileName() {
- return fileName;
- }
- public void setFileFileName(String fileName) {
- this.fileName = fileName;
- }
- public String getImageFileName() {
- return imageFileName;
- }
- public void setImageFileName(String imageFileName) {
- this.imageFileName = imageFileName;
- }
- public String getCaption() {
- return caption;
- }
- public void setCaption(String caption) {
- this.caption = caption;
- }
- public static int getBufferSize() {
- return BUFFER_SIZE;
- }
- private static void copyFile(File src, File dest) {
- try {
- InputStream in = null;
- OutputStream out = null;
- try {
- in = new BufferedInputStream(new FileInputStream(src),
- BUFFER_SIZE);
- out = new BufferedOutputStream(new FileOutputStream(dest),
- BUFFER_SIZE);
- byte[] buffer = new byte[BUFFER_SIZE];
- while (in.read(buffer) > 0) {
- out.write(buffer);
- }
- } finally {
- if (null != in) {
- in.close();
- }
- if (null != out) {
- out.close();
- }
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- private static String getExtention(String fileName) {
- int pos = fileName.lastIndexOf(".");
- return fileName.substring(pos);
- }
- @Override
- public String execute() throws Exception {
- imageFileName = new Date().getTime() + getExtention(fileName);
- File imageFile = new File(ServletActionContext.getServletContext()
- .getRealPath("/uploadFile") + "/" + imageFileName);
- System.out.println(imageFile.getName());
- copyFile(file, imageFile);
- return super.execute();
- }
- }
struts.xml配置如下:
- <package name="upload" namespace="/" extends="struts-default">
- <action name="FileUploadAction" class="jp.co.ricoh.action.upload.FileUploadAction">
- <interceptor-ref name="fileUpload">
- <param name="allowedTypes">
- image/bmp,image/png,image/gif,image/jpeg,image/jpg,
- </param>
- </interceptor-ref>
- <interceptor-ref name="defaultStack"></interceptor-ref>
- <result name="input">/upload/upload.jsp</result>
- <result name="success">/upload/showUpload.jsp</result>
- </action>
- </package>
Upload.jsp
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Struts2 File Upload</title>
- </head>
- <body>
- <s:fielderror></s:fielderror>
- <s:form action="FileUploadAction" method="post" enctype="multipart/form-data">
- <s:file name="file" label="Image File"></s:file>
- <s:textfield name="caption" label="Caption"></s:textfield>
- <s:submit></s:submit>
- </s:form>
- </body>
- </html>
但是,我明明上传的文件格式是正确,还是出现:
- Content-Type not allowed: file "09poC_wallpapers.jpg" "upload_1ea6fe4e_13611ac7d7c__8000_00000012.tmp" image/pjpeg
Content-Type not allowed: file "09poC_wallpapers.jpg" "upload_1ea6fe4e_13611ac7d7c__8000_00000012.tmp" image/pjpeg |
.a : |
application/octet-stream |
.ai : |
application/postscript |
'.aif' : |
'audio/x-aiff', |
'.aifc' : |
'audio/x-aiff', |
'.aiff' : |
'audio/x-aiff', |
'.au' : ' |
audio/basic', |
'.avi' : |
'video/x-msvideo', |
'.bat' : |
'text/plain', |
'.bcpio' : |
'application/x-bcpio', |
'.bin' : |
'application/octet-stream', |
'.bmp' : |
'image/x-ms-bmp', |
'.c' : |
'text/plain', |
# Duplicates :(
'.cdf' : |
'application/x-cdf', |
'.cdf' |
: 'application/x-netcdf', |
'.cpio' : |
'application/x-cpio', |
'.csh' : |
'application/x-csh', |
'.css' : |
'text/css', |
'.dll' : |
'application/octet-stream', |
'.doc' : |
'application/msword', |
'.dot' : |
'application/msword', |
'.dvi' : |
'application/x-dvi', |
'.eml' : |
'message/rfc822', |
'.eps' : |
'application/postscript', |
'.etx' : |
'text/x-setext', |
'.exe' : |
'application/octet-stream', |
'.gif' : |
'image/gif', |
'.gtar' : |
'application/x-gtar', |
'.h' : |
'text/plain', |
'.hdf' : |
'application/x-hdf', |
'.htm' : |
'text/html', |
'.html' : |
'text/html', |
'.ief' : |
'image/ief', |
'.jpe' : |
'image/jpeg', |
'.jpeg' : |
'image/jpeg', |
'.jpg' : |
'image/jpeg', |
'.js' : |
'application/x-javascript', |
'.ksh' : |
'text/plain', |
'.latex' : |
'application/x-latex', |
'.m1v' : |
'video/mpeg', |
'.man' : |
'application/x-troff-man', |
'.me' : |
'application/x-troff-me', |
'.mht' : |
'message/rfc822', |
'.mhtml' : |
'message/rfc822', |
'.mif' : |
'application/x-mif', |
'.mov' : |
'video/quicktime', |
'.movie' : |
'video/x-sgi-movie', |
'.mp2' : |
'audio/mpeg', |
'.mp3' : |
'audio/mpeg', |
'.mpa' : |
'video/mpeg', |
'.mpe' : |
'video/mpeg', |
'.mpeg' : |
'video/mpeg', |
'.mpg' : |
'video/mpeg', |
'.ms' : |
'application/x-troff-ms', |
'.nc' : |
'application/x-netcdf', |
'.nws' : |
'message/rfc822', |
'.o' : |
'application/octet-stream', |
'.obj' : |
'application/octet-stream', |
'.oda' : |
'application/oda', |
'.p12' : |
'application/x-pkcs12', |
'.p7c' : |
'application/pkcs7-mime', |
'.pbm' : |
'image/x-portable-bitmap', |
'.pdf' : |
'application/pdf', |
'.pfx' : |
'application/x-pkcs12', |
'.pgm' : |
'image/x-portable-graymap', |
'.pl' : |
'text/plain', |
'.png' : |
'image/png', |
'.pnm' : |
'image/x-portable-anymap', |
'.pot' : |
'application/vnd.ms-powerpoint', |
'.ppa' : |
'application/vnd.ms-powerpoint', |
'.ppm' : |
'image/x-portable-pixmap', |
'.pps' : |
'application/vnd.ms-powerpoint', |
'.ppt' : |
'application/vnd.ms-powerpoint', |
'.ps' : |
'application/postscript', |
'.pwz' : |
'application/vnd.ms-powerpoint', |
'.py' : |
'text/x-python', |
'.pyc' : |
'application/x-python-code', |
'.pyo' : |
'application/x-python-code', |
'.qt' : |
'video/quicktime', |
'.ra' : |
'audio/x-pn-realaudio', |
'.ram' : |
'application/x-pn-realaudio', |
'.ras' : |
'image/x-cmu-raster', |
'.rdf' : |
'application/xml', |
'.rgb' : |
'image/x-rgb', |
'.roff' : |
'application/x-troff', |
'.rtx' : |
'text/richtext', |
'.sgm' : |
'text/x-sgml', |
'.sgml' : |
'text/x-sgml', |
'.sh' : |
'application/x-sh', |
'.shar' : |
'application/x-shar', |
'.snd' : |
'audio/basic', |
'.so' : |
'application/octet-stream', |
'.src' : |
'application/x-wais-source', |
'.sv4cpio': |
'application/x-sv4cpio', |
'.sv4crc' : |
'application/x-sv4crc', |
'.swf' : |
'application/x-shockwave-flash', |
'.t' : |
'application/x-troff', |
'.tar' : |
'application/x-tar', |
'.tcl' : |
'application/x-tcl', |
'.tex' : |
'application/x-tex', |
'.texi' : |
'application/x-texinfo', |
'.texinfo': |
'application/x-texinfo', |
'.tif' : |
'image/tiff', |
'.tiff' : |
'image/tiff', |
'.tr' : |
'application/x-troff', |
'.tsv' : |
'text/tab-separated-values', |
'.txt' : |
'text/plain', |
'.ustar' : |
'application/x-ustar', |
'.vcf' : |
'text/x-vcard', |
'.wav' : |
'audio/x-wav', |
'.wiz' : |
'application/msword', |
'.wsdl' : |
'application/xml', |
'.xbm' : |
'image/x-xbitmap', |
'.xlb' : |
'application/vnd.ms-excel', |
# Duplicates :(
'.xls' : |
'application/excel', |
'.xls' : |
'application/vnd.ms-excel', |
.xml : |
text/xml |
.xpdl: |
application/xml |
.xpm : |
image/x-xpixmap |
.xsl : |
application/xml |
.xwd : |
image/x-xwindowdump |
.zip : |
application/zip |
firefox 和 ie 的文件类型区别
Firefox: |
image/jpeg, image/bmp, image/gif, image/png |
ie 6: |
image/pjpeg ,image/bmp, image/gif, image/x-png |
ie 7: |
image/pjpeg, image/bmp, image/gif, image/x-png |
ie 8: |
image/pjpeg, image/bmp, image/gif, image/x-png |
Ie 9: |
image/jpeg, image/bmp, image/gif, image/png |
所以在struts.xml配置文件中需要
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg,
image/pjpeg ,image/bmp, image/gif, image/x-png,
</param>