Java附件管理(2)

本文是Java附件管理系列的第二篇,主要讨论了临时文件上传的流程,如何在用户数据保存后进行附件上传,文件的下载过程,以及文件删除的操作。所有操作涉及控制器、服务层和数据库交互。
摘要由CSDN通过智能技术生成

附件管理

上一篇文章我们已经分享了有关附件管理的数据库结构,实体类型,获取附件的列表和路径。这篇文章我们继续分享有关Java附件管理的文件上传、下载和删除等操作。

临时文件上传

文件的上传不是直接可以保存进去的,而是在页面操作的时候,将需要上传的文件保存到临时创建的文件夹中,等到最终造作的时候在去临时文件夹中将所需要的文件保存到数据库中。
web页面需要发起POST请求,则controller接收到请求并执行方法。

	@Value("${file.tempUrl}")
    private String tempPath;

	/**
     * 临时文件上传
     */
    @PostMapping("/uploadTempFile")
    public Response uploadTempFile(HttpServletRequest request, HttpServletResponse response) {
   
        //获取token中的用户信息
        JSONObject userInfo = GetTokenUtils.getTokenUserInfo(request);
        String userId = userInfo.getString("userId");
        String uploadTempPath = tempPath  + userId + "/";
        // 转换request,解析出request中的文件
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        // 获取文件map集合
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        String fileName = null;
        // 循环遍历,取出单个文件
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
   
            // 获取单个文件
            MultipartFile mf = entity.getValue();
            // 获得原始文件名
            fileName = mf.getOriginalFilename();
            try {
   
                // 创建文件存放路径实例
                File dest = new File(uploadTempPath);
                // 判断文件夹不存在就创建
                if (!dest.exists()) {
   
                    dest.mkdirs();
                }
                // 创建文件实例
                File target = new File(uploadTempPath.concat(fileName));
                // 判断文件不存在就创建
                if (!target.exists()) {
   
                    // 利于spring中的FileCopyUtils.copy()将文件复制
                    FileCopyUtils.copy(mf.getBytes(), target);
                }
            } catch (IOException e) {
   
                e.printStackTrace();
                return new Response(-200,"上传失败");
            }
        }
        return new Response(200,"上传成功");
    }

附件上传

在之前的操作中已经将所需要保存到文件保存在我们临时创建的文件夹中。平常的业务不是单单的附件上传,而是一些用户数据伴随着一个附件信息来保存。所以在这里先将用户数据保存好之后再调用附件上传的service方法。

public void saveUploadFiles(String markName, long markId, String description, String userId){
   
        File file = new File(tempPath + userId + "/");
        if (file.exists()) {
   
            File[] tf = file.listFiles();
            if ((tf == null) || (tf.length == 0)) {
   
                return;
            }
            Calendar c = Calendar.getInstance();
            String folder = c.get(1) + "-" + (c.get(2) + 1);
            String uploadFolder = uploadPath + folder + "/";
            File dest = new File(uploadFolder);
            Date nowTime = Calendar.getInstance().getTime();

            for (int i = 0; i < tf.length; ++i) {
   
                if (tf[i].isFile(
功能介绍 名称:自动上传压缩工具 作用:用于同城购开发团队多人合作开发升级时使用,升级文件列表文件upgrade.config,在开发工作完成后推送即可 开发环境:使用.net 2.0 开发,使用时必须安装.net 2.0环境 upgrade.config 文件说明 属性说明:type:文件类型css、js ;bak="true":备份,bak="false"不备份 <item type="css">test/test.css</item>//自动压缩,自动备份 <item type="js" bak="false">test/test.js</item> //自动压缩,不备份 <item>test/test.jpg</item>//上传并备份 <item bak="false">test/test.jpg</item>//上传不备份 <item>test/a/*.jpg</item>//批量上传 css文件支持压缩,默认备份 使用说明:将upgrade.config文件放到本地网站根目录,然后设置好相应的工具配置config.ini项就可使用了。 新增功能 2013-4-13 1.使用js压缩工具的时候可用google的Compiler库,需要设置java目录的环境变量 2.多人协作使用新增了include语法,例子在upgrade.config中设置 3.自动识别了js、css文件类型,并能自动压缩 4.配置说明 <include file="templates/upgrade.ini" defpath="templates" bak="false" type="list" /> defpath:默认路径名称,如果团队成员只允许一个目录的权限则有必要设置 bak:备份默认 type:只有值为list的时候,才允许下级配置列表使用单行文件列表 <include file="upgrade.ini" defpath="" bak="false" type="list" /> upgrade.ini 文件配置说明 注释:采用符号;或者#开头的识别为注释 列表方式:直接写文件路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值