`

Struts2 上传文件allowedTypes详解

 
阅读更多

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>

 

分享到:
评论

相关推荐

    Struts2 文件上传之文件类型 allowedTypes.txt

    ### Struts2 文件上传之文件类型 allowedTypes.txt 在探讨Struts2框架中的文件上传功能时,一个重要的概念就是如何通过`allowedTypes`来限制上传文件的类型。这对于确保系统的安全性和提高用户体验至关重要。 ####...

    java中Struts2文件上传问题详解

    Java中使用Struts2框架进行文件上传时,需要遵循一定的步骤和规范来确保文件能够正确上传。首先,我们需要创建一个HTML页面用于用户上传文件,这个页面会包含一个表单,表单提交的方式需要设置为post,并且编码类型...

    struts2综合复习习题

    - 在Struts2中,文件上传拦截器(`FileUploadInterceptor`)可以通过`allowedTypes`参数来限制允许上传的文件类型。`image/bmp`表示允许上传的文件类型为BMP图像文件。 #### 六、关于struts标签说法正确的是() **...

    文件上传struts配置

    #### 二、Struts2文件上传配置详解 ##### 1. **DTD声明** 在`struts.xml`文件中,首先需要进行DTD(Document Type Definition)声明,它定义了文档遵循的DTD类型。例如: ```xml &lt;!DOCTYPE struts PUBLIC "-//...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_8_文件上传与下载 共20页.pptx

    在深入了解Struts2文件上传与下载的具体实现之前,我们先来回顾一下Struts2的基础概念及其课程大纲概览。 - **Struts2**是一种基于Java的Web应用程序框架,它采用了MVC(Model-View-Controller)架构模式。 - 该...

    struts2中使用注解配置Action方法详解

    Struts2中使用注解配置Action方法详解 Struts2框架提供了四个与Action相关的注解类型,分别为ParentPackage、Namespace、Result和Action。这四个注解类型可以帮助开发者更方便地配置Action,实现零配置,零配置将从...

    三大框架ssh题库.docx

    使用struts2文件上传时,前台&lt;input&gt;name属性为myfile,则关于后台,下列说法错误的是(D)。** - **后台File类型属性命名应为file**,而不是其他形式,因为Struts2框架约定以file开头的参数作为文件上传处理。 ...

    FCKeditor配置

    在`struts.xml`文件中,你还需要配置Struts2的`fileUpload`拦截器来指定允许上传的文件类型和大小。例如: ```xml &lt;param name="fileUpload.allowedTypes"&gt;image/bmp,image/png,image/gif,image/jpeg,image/jpg,...

Global site tag (gtag.js) - Google Analytics