`

上传功能的实现(Struts2)

阅读更多
上传功能的实现(Struts2)


在WebRoot根目录新建一个images文件夹

upload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<html>
  <head>
    <base href="<%=basePath%>">
  </head>
  
  <body bgcolor="green"> 
      <s:form name="" action="momo/upload" enctype="multipart/form-data">
          图片路径:<s:file name="myFile" label="浏览照片"/>
              <s:submit value="上传"/>
      </s:form>
      
  </body>
</html>



struts.xml

<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

 <struts>
 
  <constant name="struts.i18n.encoding" value="gbk"/>
  <constant name="struts.custom.i18n.resources" value="ApplicationResources"/>
  
  <package name="mm" extends="struts-default" namespace="/momo">
   <action name="upload" class="com.org.upload.action.UploadAction">
   
   <interceptor-ref name="defaultStack">
  		<param name="fileUpload.maximumSize">10240000</param>    <!--  1024b=1Kb   (10000KB/1024)M  -->
  		<param name="fileUpload.allowedTypes">
  		image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/pjpeg,
  		application/msword,text/plain,application/vnd.ms-excel  <!-- .doc  .txt  .xls -->
  		</param>
   </interceptor-ref>
   
   <result name="input">/upload.jsp</result>
   <result name="success">/success.jsp</result>
   <param name="savePath">/images</param> 
   
   </action>
   </package>
  </struts>


UploadAction.java

package com.org.upload.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Timestamp;
import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class UploadAction implements Action{
	private File myFile; //上传文件的file对象
	private String myFileFileName;//上传文件名    
	private String myFileContentType;//上传文件的MINE类型   jpeg/jpg
	private String savePath;//保存路径
	
	public File getMyFile() {
		return myFile;
	}
	public void setMyFile(File myFile) {
		this.myFile = myFile;
	}
	public String getMyFileFileName() {
		return myFileFileName;
	}
	public void setMyFileFileName(String myFileFileName) {
		this.myFileFileName = myFileFileName;
	}
	public String getMyFileContentType() {
		return myFileContentType;
	}
	public void setMyFileContentType(String myFileContentType) {
		this.myFileContentType = myFileContentType;
	}
	public String getSavePath() {
		return savePath;
	}
	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}
	public String execute() throws Exception{
		String newFileName=null;
		//得到当前时间自1900年1月7日0分0秒开始流逝的毫秒数,将这个毫秒数作为上传文件的文件名
		String now = ""+(1900+new Date().getYear()) + (1+new Date().getMonth())+ (7+new Date().getDay()) + new Date().getHours()+new Date().getMinutes()+new Date().getSeconds() ;
		System.out.print("年"+(1900+new Date().getYear())+"/月"+(1+new Date().getMonth())+"/日"+(7+new Date().getDay())+"/时"+new Date().getHours()+"/分"+new Date().getMinutes()+"/秒"+new Date().getSeconds()) ;
		//得到保存上传文件的目录的真实路径
		String path=ServletActionContext.getServletContext().getRealPath(savePath);
		File dir=new File(path);
		//如果这个目录不存在,则创建它。
		if(!dir.exists()){
			dir.mkdir();
		}
		int index=myFileFileName.lastIndexOf(".");
		//判断上传文件的名是否有扩展名
		if(index!=-1){
		newFileName=now+myFileFileName.substring(index);
		
		}else{
			newFileName=now;
		}
		
		BufferedOutputStream bos=null;
		BufferedInputStream bis=null;
		//读取保存在临时目录下的上传文件,写入到新的文件中。
		FileInputStream fis=new FileInputStream(myFile);
		bis=new BufferedInputStream(fis);
		FileOutputStream fos=new FileOutputStream(new File(dir,newFileName));
		bos=new BufferedOutputStream(fos);
		byte[] buf=new byte[4096];
		int len=-1;
		while((len=bis.read(buf))!=-1){
			bos.write(buf, 0, len);
		}
		bos.flush();
		
		return SUCCESS;
	}
	

}











上传文件类型和名字:

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>

分享到:
评论

相关推荐

    struts实现的文件上传下载功能

    在这个特定的场景中,我们关注的是如何使用Struts来实现文件的上传和下载功能。这个功能对于任何Web应用来说都是非常重要的,因为它允许用户交互地处理数据和资源。 首先,我们需要理解文件上传的基本流程。在...

    Struts2实现文件上传功能

    下面将详细阐述如何使用Struts2来实现文件上传功能。 1. **Struts2文件上传组件** Struts2框架集成了一个名为`struts2-convention-plugin`的插件,它提供了文件上传的支持。主要依赖于`Commons FileUpload`和`...

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    Struts2实现上传功能源码

    在本案例中,我们关注的是如何使用Struts2实现文件上传的功能,这在许多Web应用中都是一个常见的需求,比如用户上传头像、提交文档等。 首先,理解上传功能的基本原理。在HTTP协议中,文件上传通常通过表单的POST...

    实现struts2的文件上传文件功能

    总结,实现Struts2的文件上传功能需要配置Struts2拦截器、创建正确的HTML表单、编写处理文件上传的Action类以及处理可能出现的异常情况。这个过程涉及到了Web开发中的前端交互、后端处理和错误处理等多个方面,是...

    使用struts2实现的文件上传功能

    在Struts2框架中实现文件上传功能是一项常见的任务,这通常涉及到用户通过表单提交文件,服务器端接收并处理这些文件。在这个场景中,我们将探讨如何使用Struts2来实现这一功能。 首先,你需要在项目中引入Struts2...

    swfuplaod+struts2实现多文件上传

    结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

    ssh框架用struts2 hibernate实现图片的上传源码

    以上就是SSH框架中使用Struts2和Hibernate实现图片上传的主要知识点,涵盖了Web请求处理、ORM框架、文件上传、数据库操作以及前端交互等多个方面。实际项目开发时,还需要结合具体的业务需求和安全规范进行详细设计...

    基于struts2及poi实现的导入功能

    总结来说,"基于Struts2及POI实现的导入功能"是一个常见的Java Web开发场景,它利用Struts2的请求处理和文件上传能力,结合Apache POI的Excel文件处理功能,实现了从Excel文件高效地导入数据到Web应用中的功能。...

    struts1和struts2分别实现文件上传下载功能

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`...

    CKEditor实现图片上传(使用Struts2)

    在CKEditor中实现图片上传功能,通常会结合后端框架如Struts2进行处理。本文将深入探讨如何利用CKEditor与Struts2实现图片上传的功能。 首先,我们需要在CKEditor的配置中启用图片上传功能。这可以通过修改CKEditor...

    struts2实现上传

    在Struts2中实现文件上传功能是一项常见的任务,这通常涉及到对用户提交的文件进行验证,如限制文件类型、大小,并处理多文件上传的情况。 首先,我们需要在`struts.xml`配置文件中定义一个Action,这个Action将...

    Struts2实现文件的上传下载

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,提供了丰富的功能,包括文件的上传和下载。在本项目中,我们关注的是如何使用Struts2来实现实时的文件交互操作,即文件的上传与...

    struts2 实现文件批量上传

    本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...

    Struts+swfupload实现文件上传功能

    Struts和SwfUpload是两种在Web开发中用于构建强大功能的应用工具,它们结合使用可以实现高效的文件上传功能。在本文中,我们将深入探讨这两个组件以及如何将它们整合以实现文件上传。 首先,Struts是一个基于MVC...

    struts2图片上传并预览

    通过以上步骤,你已经成功实现了Struts2框架下的图片上传和预览功能。SmartUpload_demo可能是一个包含上述所有代码和配置的示例项目,你可以下载并运行它来加深理解。记住,实际开发中要根据具体需求进行调整,确保...

    struts2实现单个图片上传

    在本教程中,我们将深入探讨如何利用Struts2实现单个图片的上传功能,无需JavaScript的额外开发。 首先,我们需要理解图片上传的基本流程。用户通过浏览器选择一张图片,然后该图片的文件数据被发送到服务器。...

Global site tag (gtag.js) - Google Analytics