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
.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>
分享到:
相关推荐
### Struts2 文件上传之文件类型 allowedTypes.txt 在探讨Struts2框架中的文件上传功能时,一个重要的概念就是如何通过`allowedTypes`来限制上传文件的类型。这对于确保系统的安全性和提高用户体验至关重要。 ####...
Java中使用Struts2框架进行文件上传时,需要遵循一定的步骤和规范来确保文件能够正确上传。首先,我们需要创建一个HTML页面用于用户上传文件,这个页面会包含一个表单,表单提交的方式需要设置为post,并且编码类型...
- 在Struts2中,文件上传拦截器(`FileUploadInterceptor`)可以通过`allowedTypes`参数来限制允许上传的文件类型。`image/bmp`表示允许上传的文件类型为BMP图像文件。 #### 六、关于struts标签说法正确的是() **...
#### 二、Struts2文件上传配置详解 ##### 1. **DTD声明** 在`struts.xml`文件中,首先需要进行DTD(Document Type Definition)声明,它定义了文档遵循的DTD类型。例如: ```xml <!DOCTYPE struts PUBLIC "-//...
在深入了解Struts2文件上传与下载的具体实现之前,我们先来回顾一下Struts2的基础概念及其课程大纲概览。 - **Struts2**是一种基于Java的Web应用程序框架,它采用了MVC(Model-View-Controller)架构模式。 - 该...
Struts2中使用注解配置Action方法详解 Struts2框架提供了四个与Action相关的注解类型,分别为ParentPackage、Namespace、Result和Action。这四个注解类型可以帮助开发者更方便地配置Action,实现零配置,零配置将从...
使用struts2文件上传时,前台<input>name属性为myfile,则关于后台,下列说法错误的是(D)。** - **后台File类型属性命名应为file**,而不是其他形式,因为Struts2框架约定以file开头的参数作为文件上传处理。 ...
在`struts.xml`文件中,你还需要配置Struts2的`fileUpload`拦截器来指定允许上传的文件类型和大小。例如: ```xml <param name="fileUpload.allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg,...