`
coolworm
  • 浏览: 44471 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2 上传图片改变原始图片名称的方法!

阅读更多
  研究了2天,终于利用STRUTS2 自带的唯一不重名的方法 实现了修改上传文件名的方法。现在和大家分享一下~~!
   首先加入相应的JAR 包,我就不用多说了吧!
先从WEB.xml 配置开始说吧:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  
  </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>


2, struts.xml的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!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.objectFactory" value="spring"/>-->
<constant name="struts.i18n.encoding" value="GBK"/>

<package name="upload1" extends="struts-default">
  <action name="upload" class="org.example.action.Upload" method="upload" >
  		<interceptor-ref name="fileUpload">
        <param name ="allowedTypes"> 
                    image/bmp,image/PNG,image/gif,image/JPEG,image/jpg,image/pjpeg
                </param> 
                <param name="maximumSize">
					102400000
				</param>
         </interceptor-ref>
         <interceptor-ref name="defaultStack"/>
           <param name="savePath">/photo</param>
      	 <result name="success" >success.jsp</result>
      	 <result name="input"> /index.jsp</result> 
      	 
  		</action>
</package>
</struts>


下面是Upload.java
package org.example.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Upload extends ActionSupport {

	/**
	 * 
	 */
	
	private static final long serialVersionUID = -8204063374280945416L;

	
	private File upload;
	private String uploadFileName;
	private String uploadContentType;
	private String savePath;
	public File getUpload() {
		return upload;
	}
	public void setUpload(File upload) {
		this.upload = upload;
	}
	
	public String getUploadContentType() {
		return uploadContentType;
	}
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	public String getSavePath() {
	      return ServletActionContext.getRequest().getRealPath(savePath);
	}
	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}

	
	public String upload() throws Exception
	{
		//得到上传文件的后缀名
		String b=getUploadContentType();
		String houzhui=b.substring(b.indexOf("/")+1, b.length());
		houzhui=(houzhui.equals("pjpeg")?"jpg":houzhui);
		
		//得到文件的新名字
		
		String a = upload.getName();
	    String mingzi= a.substring( 0, a.length()-3 ) + houzhui; 
		
		 // 创建文件
	  FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + mingzi);
	  FileInputStream fis = new FileInputStream(getUpload());
	  byte[] buffer = new byte[1024];
	  int len = 0;
	  while ((len = fis.read(buffer)) > 0)
	  {
		fos.write(buffer , 0 , len);
	 }
    return SUCCESS;
}
	public String getUploadFileName() {
		return uploadFileName;
	}
	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
}


3,下面是index.jsp文件的源码
<%@ page language="java"  pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
 
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  	<s:fielderror></s:fielderror>
  <s:form method="post" action="upload" enctype="multipart/form-data">
  <s:textfield name="title" label="title"></s:textfield>
  <s:file name="upload" label="file"></s:file>
  <s:submit></s:submit>
  </s:form>
  <body>

  </body>
</html>



备注:
   也可以通过调用JS 的方法先得到要上传文件的后缀名,这种方法,大家自由发挥吧,想研究的朋友请联系我,QQ:296502215




分享到:
评论
3 楼 glagra 2009-03-22  
为什么一定要把当前时间加在后辍名前呢..不能直接加在名字最前面吗??
2 楼 yufeng217 2009-02-10  
牛人,厉害啊
1 楼 coolworm 2008-11-19  
  下面用调JS 的方法得到上传的后缀名:
1, 以下是 index.jsp 的代码, 在顶部加了 JS代码。
<%@ page language="java"  pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<script>  
function ty(){
var srcc = document.form.upload.value;
srcc = srcc.toString()
start = srcc.indexOf(".");
end = srcc.length;
ts=srcc.substring(start+1,end);
nts=ts.toLowerCase();
document.form.houzhui.value=nts;

}
</script>

    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  	<s:fielderror></s:fielderror>
  <s:form method="post" action="upload" enctype="multipart/form-data" onsubmit="return ty();" name="form" >
  <s:textfield name="title" label="title"></s:textfield>
  <s:file name="upload" label="file"></s:file>
  <s:hidden name="houzhui"></s:hidden>
  <s:submit></s:submit>
  </s:form>
  <body>

  </body>
</html>


2,下面是action 的代码

package org.example.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class FileUpload extends ActionSupport {

	/**
	 * 
	 */
	
	private static final long serialVersionUID = -8204063374280945416L;

	
	private File upload;
	private String uploadFileName;
	private String uploadContentType;
	private String savePath;
	private String houzhui;
	public String getHouzhui() {
		return houzhui;
	}
	public void setHouzhui(String houzhui) {
		this.houzhui = houzhui;
	}
	public File getUpload() {
		return upload;
	}
	public void setUpload(File upload) {
		this.upload = upload;
	}
	
	public String getUploadContentType() {
		return uploadContentType;
	}
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	public String getSavePath() {
	      return ServletActionContext.getRequest().getRealPath(savePath);
	}
	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}

	
	public String upload() throws Exception
	{
		//得到随机的新文件名
		String a=upload.getName();
		String b=a.substring(0, a.length()-3);
		//新文件名+得到的后缀
		String mingzi=b+ getHouzhui();
		
	  FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + mingzi);
	  FileInputStream fis = new FileInputStream(getUpload());
	  byte[] buffer = new byte[1024];
	  int len = 0;
	  while ((len = fis.read(buffer)) > 0)
	  {
		fos.write(buffer , 0 , len);
	 }
    return SUCCESS;
}
	public String getUploadFileName() {
		return uploadFileName;
	}
	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
}



备注,其他的配置和 上边的文章的配置一样,比如:web.xml, struts.xml等

相关推荐

    struts2图片上传并预览

    Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...

    struts2 上传图片显示

    在本场景中,我们关注的是如何使用Struts2来实现图片上传并显示的功能,同时生成缩略图。 首先,我们需要在Struts2配置文件(通常为struts.xml)中定义一个Action类,该类负责处理图片上传请求。这个Action类应该有...

    ckeditor+struts2上传图片

    2. **创建Struts2 Action**:在Struts2项目中创建一个Action类,比如`ImageUploadAction`,并定义一个方法来处理上传请求。这个方法需要接收`File`或`CommonsFileUpload`的`FileItem`对象,以接收上传的图片文件。 ...

    xheditor集成struts2上传图片

    - 首先,需要在Struts2的Action类中创建一个字段来接收上传的文件,并配置对应的getter和setter方法。 - 然后,配置Struts2的配置文件(struts.xml),启用FileUpload拦截器并设置上传参数,如最大文件大小、允许...

    struts2上传图片

    在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...

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

    在图片上传的场景中,Struts2提供Action类来接收用户上传的图片文件,同时可以通过配置Struts2的配置文件(struts.xml)来定义Action的映射路径和处理方法,使得前端请求能够正确地路由到后端的处理逻辑。...

    struts2上传图片到Oracle

    在"struts2上传图片到Oracle"这个场景中,我们将探讨如何使用Struts2框架实现文件上传,以及如何将这些上传的图片存储到Oracle数据库中。 首先,让我们了解文件上传的基本流程。在Struts2中,我们通常会创建一个...

    Struts2上传图片存数据库

    在本案例中,我们探讨的是如何利用Struts2框架处理文件上传,并将上传的图片以BLOB(Binary Large Object)类型存储在数据库中,同时提供下载功能。Hibernate则是一个对象关系映射(ORM)框架,它简化了数据库操作,...

    struts2 图片上传,图片大小,图片格式

    在本项目中,我们关注的是Struts2中的图片上传功能,以及如何处理图片的大小和格式问题。这个压缩包包含了实现这些功能所需的jar文件和其他资源,例如TestUpload_Struts2项目。 首先,图片上传是Web应用中常见的...

    struts2实现单个图片上传

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

    Struts2上传图片并生成等比例缩略图的实例

    在Struts2框架中,实现图片上传并生成等比例缩略图是一项常见的需求,尤其在构建Web应用时。本实例将向你展示如何利用Struts2的FileUpload拦截器处理图片上传,并通过Java图像处理库如Java AWT或Apache Commons ...

    Struts2 JQuery同步上传图片

    在本例中,我们将探讨如何结合Struts2和jQuery实现图片的同步上传功能。 首先,让我们分析`upload.jsp`页面。这个页面是用户与应用交互的界面,它包含了一个Struts2的表单(`&lt;s:form&gt;`),用于文件上传。表单的属性...

    struts实现上传图片

    本文将深入探讨如何使用Struts框架实现图片上传功能,这在许多Web应用中都是一个常见且重要的需求。 ### Struts框架简介 Struts是一个开源的框架,用于创建企业级的Java Web应用。它基于Servlet和JSP技术,并遵循...

    struts2 上传图片时对图片进行压缩, 生成一张小图片

    本主题涉及的是如何在Struts2中处理图片上传,并在上传后对其进行压缩,生成一张小图片以便在网页上展示。以下是实现这一功能所需的关键知识点: 1. **Struts2上传组件**: Struts2提供了`struts2-convention-...

    struts2 ajax图片上传

    在Struts2中实现Ajax图片上传功能,可以帮助用户在不刷新整个页面的情况下提交图片,提高用户体验。Ajax技术利用JavaScript的XMLHttpRequest对象与服务器进行异步数据交换,使得网页部分更新成为可能。 首先,我们...

    struts2中绝对路径上传图片和显示图片

    在Struts2中处理文件上传是一项常见的任务,尤其是上传图片并展示它们。本篇将详细介绍如何在Struts2中实现绝对路径上传图片以及在页面上显示这些图片。 首先,了解文件上传的基本概念。在Web开发中,文件上传允许...

    struts2上传下载+前端剪切图片

    在"struts2上传下载+前端剪切图片"这个主题中,我们将探讨Struts2框架如何处理文件上传和下载功能,以及如何在前端实现图片的剪切操作。 **文件上传**: 在Struts2中,文件上传主要依赖于Apache的Commons ...

    struts框架图片上传和显示

    需要注意的是,为了安全起见,应避免直接使用上传文件的原始名称,以免遭受文件名注入攻击。可以使用UUID或其他唯一标识符来重命名上传的文件。 总结起来,Struts框架通过`struts2-fileupload`库支持图片上传,处理...

    Struts2实现图片添加水印

    在Struts2中实现图片添加水印的功能,可以为网站或应用提供版权保护,美观设计,或者增强品牌形象。以下是关于如何在Struts2中实现这一功能的详细步骤和知识点: 1. **添加单个文字水印** 要添加文字水印,首先...

    struts2.0图片上传代码

    Struts2.0图片上传是Web开发中常见的一项功能,涉及到的主要知识点包括Struts2框架、文件上传处理、IO流操作以及配置文件的设定。在本文中,我们将深入探讨这些内容,帮助你理解和实现Struts2.0环境下的图片上传功能...

Global site tag (gtag.js) - Google Analytics