common-upload上传文件功能封装类分享

文件屬性bean


代码如下:

package com.onsafe.util.upload;

/**
 * 文件屬性bean
 * @author lushuifa
 */
public class FileBean {
 private String fileName;// 文件名
 private String fileContentType;// 上传文件的数据类型
 private long fileSize;// 文件的大小;单位byte
 private String extName;// 文件扩展名的大小
 private String fieldName;
 private String filePath;
 private String fileNote;//文件说明
 private String newFileName;//新文件名

public String getFileName() {
  return fileName;
 }

public void setFileName(String fileName) {
  this.fileName = fileName;
 }

public String getFileContentType() {
  return fileContentType;
 }

public void setFileContentType(String fileContentType) {
  this.fileContentType = fileContentType;
 }

public long getFileSize() {
  return fileSize;
 }

public void setFileSize(long fileSize) {
  this.fileSize = fileSize;
 }

public String getExtName() {
  return extName;
 }

public void setExtName(String extName) {
  this.extName = extName;
 }

public String getFilePath() {
  return filePath;
 }

public void setFilePath(String filePath) {
  this.filePath = filePath;
 }

public String getFieldName() {
  return fieldName;
 }

public void setFieldName(String fieldName) {
  this.fieldName = fieldName;
 }

public String getFileNote() {
  return fileNote;
 }

public void setFileNote(String fileNote) {
  this.fileNote = fileNote;
 }

public String getNewFileName() {
  return newFileName;
 }

public void setNewFileName(String newFileName) {
  this.newFileName = newFileName;
 }
}

上传工具类


代码如下:

package com.onsafe.util.upload;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.onsafe.util.ChineseSpelling;

/**
 * 上传工具类
 * @author Administrator
 *
 */
public class UploadTools {

protected final static Log log = LogFactory.getLog(UploadTools.class);

private HttpServletRequest request = null;
 private String savePath = "";
 private List<FileBean> fileBeanList = null;
 //上传表单的其它信息,除file类型的input
 private Map<String,String> formDatas = null;
 private String uploadStatus = "";
 //文件单个最大大小
 private long maxSize;
 //文件允许的格式为
 private String allowExts;
 //文件不允许的格式为
 private String unAllowExts;

public void uploadFiles() {
  savePath = this.getSavePath();
  fileBeanList = new ArrayList<FileBean>();
  formDatas    = new HashMap<String,String>();
  DiskFileItemFactory factory = new DiskFileItemFactory();
  ServletFileUpload upload = new ServletFileUpload(factory);
  try {
   List<FileItem> items = upload.parseRequest(this.getRequest());//上传文件解析
   //表单元素集合
   List<FileItem> formFieldList = new ArrayList<FileItem>();
   //文件元素集合
   List<FileItem> fileFieldList = new ArrayList<FileItem>();
   if (items.size()>0) {
    //将表单元素和文件元素装载到不同的集合中
    for (FileItem fileItem : items) {
     if (fileItem.isFormField()) {
      formFieldList.add(fileItem);
     } else {
      fileFieldList.add(fileItem);
     }
    }

/**
     * 分解表单元素
     */
    //初始化文件上传属性bean
    FileBean fileBean = null;
    for (FileItem fileItem : formFieldList) {
     System.out.println("表单参数名:" + fileItem.getFieldName()+ ",表单参数值:" + fileItem.getString("UTF-8"));
     formDatas.put(fileItem.getFieldName(), fileItem.getString("UTF-8").replace("'", "''"));
     if(fileItem.getFieldName().equals("companyName")){
      savePath = savePath.replace("gongsi", ChineseSpelling.getSpell(fileItem.getString("UTF-8")));
     }

if(fileItem.getFieldName().toLowerCase().contains("colum")){
      savePath = savePath.replace("lanmu", ChineseSpelling.getSpell(fileItem.getString("UTF-8")));
     }

if(fileItem.getFieldName().equals("articleUUID")){
      savePath = savePath.replace("uuid", fileItem.getString("UTF-8"));
     }
    }
    log.info("保存的真实路径为:"+savePath);

/**
     * 分解文件元素
     */
    for (FileItem fileItem : fileFieldList) {
     //先判断文件件域是否选择了文件
     if (fileItem.getName() != null && !fileItem.getName().equals("")) {
      //文件名
      String fileName = fileItem.getName();
      // IE 和 FireFox 下的 getName() 得出的值不同
                        // IE 下得到的是文件的完整路径
                        if(fileName.contains("\\")) {
                            // 截取得到完整路径后的文件名
                         fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
                        }
      //文件大小
      long fileSize = fileItem.getSize();
      //检查扩展名
      String extName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                        //文件属性bean
      fileBean = new FileBean();
      fileBean.setFileName(fileName);
      fileBean.setExtName(extName);
      fileBean.setFileSize(fileSize);
      SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
      //文件名转拼音
      String pingyingFileName = ChineseSpelling.getSpell(fileName);
      String newFileName = df.format(new Date()) + "_" + pingyingFileName;

fileBean.setFilePath(savePath+newFileName);
      fileBean.setFieldName(fileItem.getFieldName());
      fileBean.setNewFileName(newFileName);
      File f1 = new File(savePath);
      if (!f1.exists()) {
       f1.mkdirs();
      }
      System.out.println("新文件路径:"+newFileName);
      File uploadedFile = new File(savePath, newFileName);
      fileItem.write(uploadedFile);
      // 获取根目录对应的真实物理路径
      // 保存文件在服务器的物理磁盘中
      System.out.println("上传文件的大小:" + fileItem.getSize());
      System.out.println("上传文件的类型:" + fileItem.getContentType());
      System.out.println("上传文件的名称:" + fileName);
      fileBeanList.add(fileBean);
      uploadStatus = "上传成功";
     } else {
      uploadStatus = "没有选择文件!";
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
   uploadStatus =  "上传文件失败!";
  }
 }

public List<FileBean> getFileBeanList() {
  return fileBeanList;
 }

public void setFileBeanList(List<FileBean> fileBeanList) {
  this.fileBeanList = fileBeanList;
 }

public HttpServletRequest getRequest() {
  return request;
 }

public void setRequest(HttpServletRequest request) {
  this.request = request;
 }

public String getSavePath() {
  return savePath;
 }

public void setSavePath(String savePath) {
  this.savePath = savePath;
 }

public Map<String, String> getFormDatas() {
  return formDatas;
 }

public void setFormDatas(Map<String, String> formDatas) {
  this.formDatas = formDatas;
 }

public String getUploadStatus() {
  return uploadStatus;
 }

public void setUploadStatus(String uploadStatus) {
  this.uploadStatus = uploadStatus;
 }

public long getMaxSize() {
  return maxSize;
 }

public void setMaxSize(long maxSize) {
  this.maxSize = maxSize;
 }

public String getAllowExts() {
  return allowExts;
 }

public void setAllowExts(String allowExts) {
  this.allowExts = allowExts;
 }

public String getUnAllowExts() {
  return unAllowExts;
 }

public void setUnAllowExts(String unAllowExts) {
  this.unAllowExts = unAllowExts;
 }
}

运用工具类

代码如下:

// 实例化上传工具类
UploadTools uploadTools = new UploadTools();
uploadTools.setSavePath(savePath);
uploadTools.setRequest(wu.request);
uploadTools.uploadFiles();
Map<String, String> fds = uploadTools.getFormDatas();
List<FileBean> fileBeanList =uploadTools.getFileBeanList();

时间: 2014-01-06

android 上传文件到服务器代码实例

android对于上传文件,还是很简单的,和java里面的上传都是一样的,基本上都是熟悉操作输出流和输入流!还有一个特别重要的就是需要一些content-type这些参数的配置!  如果这些都弄好了,上传就很简单了!   下面是我写的一个上传的工具类: 复制代码 代码如下: package com.spring.sky.image.upload.network; import java.io.DataOutputStream;import java.io.File;import java.io.

jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)

特点: 1.不依赖与jquery 2.而且,好看些吧..支持很多实例,上传成功后.会有一个回调函数.比如缩略图地址显示出来 用法: 复制代码 代码如下: <link href="http://fineuploader.com/source/fineuploader-3.9.1.min.css" rel="stylesheet" /><script src="http://fineuploader.com/source/fineupload

PHP上传文件时文件过大$_FILES为空的解决方法

在做图片上传的时候突然发现一张gif图片上传失败 size为0,实际大小为4.66M.上传小文件时可以,传大文件就不行,看了下PHP.INI里面upload_max_filesize = 2M, 问题就出在这了,修改其值 复制代码 代码如下: ; Maximum allowed size for uploaded files. upload_max_filesize = 20M 重启了下nginx问题解决.

js 判断上传文件大小及格式代码

我们在做文件上传时,为了实现异步上传的效果,一般会选择采用iframe的形式来进行文件的上传,但我们不能像ajax那样对服务端返回的数据进行处理,从而来进行文件大小以及文件样式的判断,所以我们一般也会想到使用js对上传的文件大小以及格式进行初步的判断,在服务端再进行一次判断(防止浏览器拒绝执行脚本文件). 以下提供一种方法用js判断文件大小. 复制代码 代码如下: var url = window.location.href, type = url.substr(url.lastIndexOf(

javascript验证上传文件的类型限制必须为某些格式

复制代码 代码如下: //验证文件的格式 function validateFile(){ var fileObject=$("#filename"); var errorObject=$("#error"); var filepath=fileObject.val(); var fileArr=filepath.split("//"); var fileTArr=fileArr[fileArr.length-1].toLowerCase().s

详解jquery uploadify 上传文件

网上找了一天,大家都说Uploadify唯一的缺点就是不支持中文按钮,杯具之前,我看了下Uploadify的API,才发现了几个参数没被大家提及的,这正是解决此问题的关键.(以后坚决养成没事就看API的习惯)    Uploadify有一个参数是 buttonText 这个无论你怎么改都不支持中文,因为插件在js里用了一个转码方法把这个参数的值转过码了,解码的地方在那个swf文件里,看不到代码,所以这条路不行.    另一个参数,网上很少提到,是 buttonImg( 按钮图片),这时你完全可以

php上传文件中文文件名乱码的解决方法

可能会有不少朋友碰到一些问题就是上传文件时如果是英文倒好原文名不会有问题,如果是中文可能就会出现乱码了,今天我来给大家总结一下导致乱码php上传文件中文文件名乱码的原因与解决办法吧. 这几天在windows下安装了XAMPP,准备初步学习一下php的相关内容.这几天接触到了php上传文件,但是出现了一个郁闷问题,我准备上传一个excel文件,但是如果文件名是中文名就会报错. 一来二去很是郁闷,后来仔细想了想应该是文件编码的问题,我写的php文件使用的是UTF-8编码,如果没有猜错APACHE处理

PHP用FTP类上传文件视频等的简单实现方法

文件1:ftp.php <?php /** * 仿写CodeIgniter的FTP类 * FTP基本操作: * 1) 登陆; connect * 2) 当前目录文件列表; filelist * 3) 目录改变; chgdir * 4) 重命名/移动; rename * 5) 创建文件夹; mkdir * 6) 删除; delete_dir/delete_file * 7) 上传; upload * 8) 下载 download * * @author quanshuidingdang */ cl

PHP上传文件时自动分配路径的方法

本文实例讲述了PHP上传文件时自动分配路径的方法.分享给大家供大家参考.具体分析如下: 网站上传文件时,如果是小的企业站,放在一个目录还没问题,当网站大了,上传的文件多了,我们就不能放在同一个目录了,这里我们就来讲讲用PHP自动给上传的文件分配路径的方法. PHP分配上传文件的路径实例 主要程序片段如下: 复制代码 代码如下: <?php    /*数字方式分配路径*/    function allotPath($id, $extend='jpg') {       $folders = st

PHP上传图片时判断上传文件是否为可用图片的方法

本文实例讲述了PHP上传图片时判断上传文件是否为可用图片的方法.分享给大家供大家参考,具体如下: 这里利用getimagesize函数: function isImage($filename) { $types = '.gif|.jpeg|.png|.bmp'; //定义检查的图片类型 if(file_exists($filename)) { $info = getimagesize($filename); $ext = image_type_to_extension($info['2']);

Linux下JDK中文字体乱码的解决方法

问题描述: 部署在linux下的java应用程序中的中文会变成一个一个的"口"字,也就是乱码 问题分析: 代码中使用了如下的实现方式: new java.awt.Font("宋体", Font.PLAIN, 12)那么jdk中一定需要"宋体"这个字体($JAVA_HOME/jre/lib/fonts目录下) 由于JDK默认没有中文字体,所以就会显示为乱码 需要手工设置一下,让java应用程序能够找到所需的中文字体 解决方式: 将需要的字体文件上传

PHP附件下载中文名称乱码的解决方法

本文实例讲述了PHP附件下载中文名称乱码的解决方法.分享给大家供大家参考,具体如下: PHP中,如果要下载的文件名称为中文,则会出现文件标题乱码. 此时就需要对标题进行编码,也就是说先进性urlencode,然后再放入header,然后问题就解决了. $filename = urlencode("下载文档"); header ( "Content-disposition: attachment; filename=$filename.xls" ); 网上说,在RFC

PHP在Windows IIS上传的图片无法访问的解决方法

PHP在Windows IIS上传的图片无法访问的解决方法 首先登录到网站后台进行了测试发现上传的图片在确实浏览器打不开且出现了无法访问的错误信息:" 401 - 未 授权: 由于凭据无效,访问被拒绝." 然后又测试了该服务器上其他几个php项目发现也出现了一样的错误: 图片上传成功,但浏览器没有权限访问. 因为测试的几个php系统是不一样的,有thinkphp,wordpress,百度ueditor编辑器. 所以这几个系统同时出现问题的概率实在是太小了,所以基本上排除了程序的bug,

PHP中file_exists()判断中文文件名无效的解决方法

本文实例讲述了PHP中file_exists()判断中文文件名无效的解决方法.分享给大家供大家参考.具体方法如下: php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来看看. 定义和用法: file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 例子1 复制代码 代码如下: <?ph

js传值后台中文出现乱码的解决方法

本文实例讲述了js传值后台中文出现乱码的解决方法.分享给大家供大家参考,具体如下: 在"test.jsp"页面中,需要通过js将值传递到后台,后台根据传递的值进行数据查询时,通过test.jsp的js进行编码(标注部分的代码),后台Java解码(注释标注部分为解码),可以解决 test.jsp: <script type="text/JavaScript" charset="UTF-8"> function test() { //下面

JS传值出现中文参数乱码的解决方法

本文实例讲述了JS传值出现中文参数乱码的解决方法.分享给大家供大家参考,具体如下: function PopupFK(cNum,type){ var url = "contract!Paying.action"; url = url + "?contract.contractNum="+cNum+"&payingType="+type; // if(isEmpty($(_this).attr("payId"))){ /