Struts文件上传

工具类,生成二级目录和随机文件名;

import java.util.UUID;

public class FileuploadUtils {
    /**
     * 截取真实文件名
     * 
     * @param fileName
     * @return
     */
    public static String subFileName(String fileName) {
        // 查找最后一个 \出现位置
        int index = fileName.lastIndexOf("\\");
        if (index == -1) {
            return fileName;
        }
        return fileName.substring(index + 1);
    }

    // 获得随机UUID文件名
    public static String generateRandonFileName(String fileName) {
        // 获得扩展名
        String ext = fileName.substring(fileName.lastIndexOf("."));
        return UUID.randomUUID().toString() + ext;
    }

    // 获得hashcode生成二级目录
    public static String generateRandomDir(String uuidFileName) {
        int hashCode = uuidFileName.hashCode();
        // 一级目录
        int d1 = hashCode & 0xf;
        // 二级目录
        int d2 = (hashCode >> 4) & 0xf;
        return "/" + d1 + "/" + d2;
    }

}

//文件上传action

//三个固定的变量;必须提供setter方法;

    // 上传文件变量;
    private File upload;//jsp中fs标签 file标签的name;
    private String uploadFileName;// 文件名:页面name属性值+FileName;
    private String uploadContentType;// 文件类型;页面name属性值+ContentType;

代码;

// 处理上传的文件;
        // 判断有无上传文件
        if (upload != null) {

            // 随机文件名;
            String randomFilename = FileuploadUtils
                    .generateRandonFileName(uploadFileName);
            // 随机目录;
            String randomFileDir = FileuploadUtils
                    .generateRandomDir(randomFilename);
            System.out.println(randomFileDir);
            // 存放位置+拼接目录和文件名;
            String realPath = SystemContent.BASEFILEDIR + randomFileDir + "/"
                    + randomFilename;
            // 将文件从临时存放位置copy到正式存放位置;

            FileUtils.copyFile(upload, new File(realPath));
            // 调用service;保存数据;
            // 手动设置 保存的上传文件的名字和地址;
            // 名字就存真实名字;
            user.setFilename(uploadFileName);
            // 地址,用相对路径,因为将来存放位置发生变化用对位置很麻烦;
            user.setPath(randomFileDir + "/" + randomFilename);
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值