Struts2 简单的文件上传例子,一看就懂。

 

 

解释: 

(!)  非注解情况下,  SET 和get  方法是一定要要的。  否则, 

private String fileFileName;      //名字规则     页面name+ FileName
private String fileContentType;  //同上

会出现 null值。

(2)   如果上传过程中出现乱码,在配置文件配置可行。   使用   request.setCharacterEncoding(“gbk"); 同理。

 

package com.cardinfolink.servlet;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import sun.awt.AppContext;

public class batchAction {
 
 private  String  page;
 public String getPage() {
  return page;
 }
 public void setPage(String page) {
  this.page = page;
 }

//从前端页面获取的  File  对象
 private  File  file;

//从前端获取的File   Name
 private String fileFileName;

//从前端获取的File类型
 private String fileContentType;

//属性封装域
 public File getFile() {
  return file;
 }
 public void setFile(File file) {
  this.file = file;
 }
 public String getFileFileName() {
  return fileFileName;
 }
 public void setFileFileName(String fileFileName) {
  this.fileFileName = fileFileName;
 }
 public String getFileContentType() {
  return fileContentType;
 }
 public void setFileContentType(String fileContentType) {
  this.fileContentType = fileContentType;
 }

 

// Action   核心处理器
 public   String     upFileAction() throws Exception
 {
  
   System.out.println(file);
   System.out.println(this.fileContentType);
   System.out.println(this.fileFileName);
   //输出流
   FileOutputStream fos = null;
   //输入流
   FileInputStream fis = null;     
   try { // 建立文件输出流         
      
  fos = new FileOutputStream("D:/Report/"+this.fileFileName); 
     // 建立文件上传流          
  fis = new FileInputStream(file);
  
  //最大10MB
  byte[] buffer = new byte[1024*1204*10]; 
  
  //开始读写文件
  int len = 0;       
  while ((len = fis.read(buffer)) > 0)
  {              
   fos.write(buffer, 0, len);        
   }      
  }
   catch (Exception e)
   {          
    System.out.println("文件上传失败");
    e.printStackTrace();  
  }
   finally
   {           
    close(fos, fis);
    }   
      this.page="fail.jsp";
   return "S";
   }
  

//关闭流


private void close(FileOutputStream fos,FileInputStream fis)
{      
 if (fis != null)
 {       
  try { 
   fis.close();
   }
  catch
  (IOException e)
  { 
   System.out.println("FileInputStream关闭失败");
              e.printStackTrace();   
              }    
  }  
 if (fos != null)
 {        
  try { 
   fos.close(); 
   }
  catch (IOException e)
   {
   System.out.println("FileOutputStream关闭失败");  
   e.printStackTrace();        
   }      
  }   
 }

}

//配置文件

<struts>

 
     <constant name="struts.ui.theme" value="simple"></constant>   

 <!-  解决文件上传过程产生乱码-!>
     <constant name="struts.i18n.encoding" value="gbk"></constant>

 <action name="batchAction" class="com.cardinfolink.servlet.batchAction">
     <result name="S">view/${page}</result>
     </action>

     </package>
</struts>
   

//    页面

<input type="file" id="file"  name="file"/><span style="color: red; font-size: 12px;">(*文件状态必须是xls格式)</span></p>

<div  id="form1"></div>
<p><a class="a" href="javascript:CreateEt();"><img src="image/add21.gif" width="15"/>添加一个文件</a></p>
<p><input  id="submit" type="submit" class="btn btn-green" value="确认文件并上传"/></p>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码可剥落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值