`

struts1上传注意事项

阅读更多
1.
    <form action="<%=basePath%>priRing.do?method=upload" method="post" enctype="multipart/form-data">
    <table>
    <tr>
    <td><input type="file" name="formfile"/></td>//1
    </tr>
       <tr>
    <td><input type="submit"/></td>
    </tr>   
    </table>
    form中
private FormFile formfile;//2
1和2两处的名字必须一样

2.
String name=ff.getFileName();
System.out.println("name="+name);
InputStream is=ff.getInputStream();
FileOutputStream fos=new FileOutputStream(path+"/"+ff.getFileName());//3
3处的路径必须加文件的名字

代码如下:
package com.buybal.mgr.struts.action.pictureAndRing;

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.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;
import org.directwebremoting.util.Logger;

import com.buybal.mgr.struts.form.PictureAndRingForm;
import com.jrt.mgr.Global;
import com.jrt.mgr.bean.PictureAndRing;

public class PictureAndRingAction extends DispatchAction {
    private static final Logger logger=Logger.getLogger(PictureAndRingAction.class);
	public ActionForward pictureUpload(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		PictureAndRingForm fileForm=(PictureAndRingForm)form;
		try{
			//将文件进行上传
			response.setCharacterEncoding("utf-8");
			FormFile ff=fileForm.getFile();
			if(ff.getFileSize()<0||ff.getFileName().equals("")){
				logger.info("上传的文件不存在");
				return null;
			}			
			String path="D:\\upload";//路径可以通过配置文件获得
			File file=new File(path);
			if(!file.exists()){//如果文件不存在则建立该目录
				file.mkdirs();
			}
			InputStream is=ff.getInputStream();		
			OutputStream bos = new FileOutputStream(path+"\\"+ff.getFileName());//此处的路径是:path+文件名
		    int bytesRead = 0;
	        byte buffer[] = new byte[ff.getFileSize()];
	        while ((bytesRead = is.read(buffer, 0, ff.getFileSize())) != -1)  {
	        bos.write(buffer, 0, bytesRead);             
	        }
	        bos.close();       
	        is.close();   
	        //以下方法是将Zip文件进行解压
	        int type=fileForm.getType();//上传内容,0图片,1是铃声
	        int contenttype=fileForm.getContenttype();//上传内容
			unzip(path,type,contenttype);
	       System.out.println("dd");
		}catch(Exception e){
			e.printStackTrace();
			logger.error("上传文件失败,失败原因是:"+e.toString());
		}
		
		
		return null;
	}
	
		/*解压文件
	 * **/
	public synchronized void unzip(String path,int type,int contenttype) throws Exception{
		 File fff=new File(path);
	       File[] f=fff.listFiles();
	       for(int i=0;i<f.length;i++){
	    	   File fs=f[i];
	    	   System.out.println(fs.getName());
	    	   if(fs.getName().indexOf(".zip")>-1){
	    		   ZipFile zip=new ZipFile(fs);
	    		   path=path+"\\"+fs.getName().substring(0, fs.getName().indexOf(".zip"));
	    		   Enumeration e = zip.entries();
	    		   ZipInputStream iss=new ZipInputStream(new FileInputStream(fs));
	    		   while(e.hasMoreElements()){
	    			   ZipEntry zipEnt = (ZipEntry) e.nextElement();
	    			   if(zipEnt.isDirectory()){
	    				   continue;//如果是根目录则跳出
	    			   }
	    			   String name= (new String(zipEnt.getName().getBytes("ISO-8859-1"),"UTF-8")).trim();
	    			   File ff=new File(path);
	    			   if(!ff.exists()){
	    				   ff.mkdirs();
	    			   }
	    			   if(name.indexOf("/")>-1){//文件包含子目录时
	    				   name=name.substring(name.indexOf("/")+1,name.length());
	    			   }
	    			   if(name.indexOf("\\")>-1){//包含子目录时
	    				   name=name.substring(name.indexOf("\\")+1,name.length());
	    			   }
	    			  // InputStream iss = zip.getInputStream(zipEnt);  	                 
	                   OutputStream os = new FileOutputStream(path+"\\"+name); //循环中不能用BufferedInputStream,会报stream Close错误
	                   int bytesRead = 0;
	       	             byte buffer[] = new byte[8192];
	       	          while ((bytesRead = iss.read(buffer, 0, 8192)) != -1) {
	       	              os.write(buffer, 0, bytesRead);
	       	          }  
	                  
	                    os.close();   
	                    //将上传的图片存入数据库
	                    String fpath=path+"\\"+name;
	                    List<PictureAndRing> list=Global.parDAO.getPictureAndRing(type, contenttype, fpath);
	                    if(list==null||list.isEmpty())//检查数据库中是否有改图片
	                    Global.parDAO.addPictureAndRing(name,type,contenttype,fpath);
	    		   }
	    		   iss.close();
	    	   }
	       }
	}
}
分享到:
评论

相关推荐

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts框架-文件上传下载

    1. 使用Struts2的拦截器来处理文件上传,可以更好地控制和管理文件上传过程。 2. 为文件上传和下载操作编写单元测试,确保其稳定性和正确性。 3. 保持代码的可读性和可维护性,遵循良好的编程规范。 以上是对...

    struts1 文件上传 文件下载

    下面将详细介绍如何使用Struts1实现文件上传和下载,以及涉及到的关键知识点。 **一、文件上传** 1. **表单配置**:在HTML表单中,我们需要使用`&lt;input type="file"&gt;`标签让用户选择要上传的文件。同时,表单需要...

    struts2上传和下载文件详细源码

    - 表单JSP页面:使用Struts2标签库构建表单,包括文件上传字段和提交按钮。 - struts.xml配置文件:定义Action及其对应的Action方法,以及可能的文件上传和下载Result配置。 - 错误处理:可能包括处理文件上传...

    struts2上传

    #### 四、Struts2文件上传注意事项 1. **表单编码**:确保表单的`enctype`属性正确设置为`multipart/form-data`。 2. **文件大小限制**:服务器端和客户端都可能有文件大小限制,默认情况下Struts2没有对上传文件的...

    struts1.x多文件上传

    6. **安全注意事项**:确保对上传的文件进行安全检查,避免恶意用户通过上传文件执行脚本或破坏系统。这可能涉及到验证文件扩展名、检查内容以及存储路径的安全性。 总的来说,Struts1.x的多文件上传功能通过合理的...

    strut2上传文件注意

    综上所述,在使用Struts2框架进行文件上传开发时,不仅需要关注基本的配置步骤,还应当注重细节上的处理,特别是在安全性方面需要格外小心。通过对上述关键点的理解和实践,可以有效提升文件上传功能的健壮性和安全...

    swfuplaod+struts2实现多文件上传

    SWFUpload 是一款开源的Flash上传组件,...通过上述步骤和注意事项,你可以利用SWFUpload和Struts2构建一个功能强大且安全的多文件上传功能。在实际项目中,根据需求进行适当的定制和优化,以满足用户需求和系统安全。

    Struts2+uploadify上传文件

    ### 注意事项 - 确保服务器端有足够权限写入上传的文件。 - 限制上传文件的大小和类型,防止恶意文件上传。 - 为了兼容非Flash环境,可以使用Uploadify的HTML5模式,但需要注意浏览器的兼容性问题。 - 上传过程中要...

    struts2文件上传的两种方法

    三、注意事项 - 文件大小限制:Struts2默认设置文件大小限制为2MB,可以通过配置`struts.multipart.maxSize`属性来调整。 - 安全性:确保上传的文件类型安全,避免XSS、CSRF等攻击,可以使用过滤器或者在Action中...

    struts图片上传与下载

    注意事项** - 文件上传时,应限制文件大小和类型,防止DoS攻击和恶意文件上传。 - 保证文件命名的唯一性,避免覆盖已有文件。 - 使用预览功能,让用户确认上传的图片是否正确。 - 定期清理无用的上传文件,节省...

    struts2上传文件

    以上就是关于Struts2文件上传的基本流程和注意事项。在实际项目中,你可能会根据需求进行更复杂的功能扩展,比如使用临时目录存储上传文件、异步上传、进度条显示等。在提供的压缩包"struts2fileupdemo"中,可能包含...

    struts2上传下载

    1. **依赖引入**:使用Struts2进行文件上传,需要引入`struts2-convention-plugin`和`struts2-file-uploading-plugin`插件。确保`struts.xml`配置文件中包含必要的拦截器栈。 2. **表单设计**:创建一个HTML表单,...

    Struts2上传文件

    以上就是Struts2框架中实现文件上传的基本步骤和注意事项,无论是单个文件还是多个文件,理解其工作原理和配置细节是实现这一功能的关键。希望这些信息能帮助你在实际开发中顺利地处理文件上传任务。

    简单易懂的struts2文件上传

    8. **安全注意事项** 在处理文件上传时,确保对文件名进行安全过滤,避免路径遍历攻击。此外,要限制上传文件的大小和类型,防止恶意文件上传,比如病毒或脚本文件。 通过以上步骤,你可以在Struts2中实现一个简单...

    Struts 上传下载

    Struts上传 #### 1.1 ActionForm 在Struts中,`ActionForm` 类是用于收集用户输入的数据。对于文件上传,我们需要创建一个继承自 `org.apache.struts.upload.FormFile` 的类,例如 `UploadForm`,在这个类中定义一...

    Struts2实现文件上传

    8. **安全注意事项**: - 避免路径遍历攻击,确保上传的文件被保存在预定的目录下,不包含任何动态或用户可控的路径。 - 进行文件类型检查,防止执行恶意代码,如上传`.jsp`或`.php`文件。 - 考虑使用随机文件名...

    struts2的上传,下载,删除文件

    4. 安全注意事项: - 上传限制:防止大文件上传导致服务器资源耗尽,可以设置最大上传大小。 - 防止路径遍历攻击:验证上传文件的路径,避免用户访问到服务器的敏感文件。 - 文件名处理:对上传文件的原始名字...

    struts2.0上传文件

    通过以上步骤,你可以使用Struts2.0实现文件上传功能。在实际开发中,还可以结合其他技术,如Spring、Hibernate等,以构建更复杂的业务流程。记住,始终要关注安全性,以确保应用的稳定性和用户的数据安全。

    struts2文件上传源码和步骤

    5. **注意事项**: - 文件上传时要考虑安全性,比如限制文件大小和类型,防止恶意用户上传大文件或危险文件。 - 上传的文件应保存在一个安全的目录下,避免暴露敏感信息或被直接访问。 - 处理文件时,要确保正确...

Global site tag (gtag.js) - Google Analytics