spring mvc 二进制文件上传

/**
     * 二进制文件上传(前端)
     *
     * @param multipartFile MultipartFile上传文件的二进制流
     * @return fileUploadMap
     * @see org.springframework.web.multipart.MultipartFile
     */
    public Map<String, String> getFileUpload(MultipartFile multipartFile, String name, String uuid, String type,HttpServletResponse response) {

//        MultipartResolver resolver = new CommonsMultipartResolver(httpServletRequest.getSession().getServletContext());
//        MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(httpServletRequest);
//        List<MultipartFile> multipartFiles = multipartRequest.getFiles("file");

        Map<String, String> fileUploadMap = new HashMap<String, String>();
        //  for (MultipartFile multipartFile : multipartFiles) {
        //获取文件流
        InputStream fileInputStream = null;
        try {
            fileInputStream = multipartFile.getInputStream();
            if (null == fileInputStream) {
            }
        } catch (Exception e) {
            this.setError("上传文件:", "获取文件流", e.getMessage());
            //
        }

        //获取uuid作为新的文件名称
        String newFileName = UUID.randomUUID().toString();
        String dotExtensionName = StringUtil.getDotExtensionName(multipartFile.getOriginalFilename());

        //如果有以点开始的正常的文件扩展名,则将文件扩展名附加进来
        //如果不存在以点开始的正常的文件扩展名,则直接使用uuid,不附加扩
        //展名的方式保存文件
        if (dotExtensionName != null) {
            newFileName += dotExtensionName;
        }
        //写文件
        File newFile = FileUtil.createUploadDirectoryAndFile(newFileName);
        if (newFile == null) {
            this.setError("文件名:" + newFile.getPath(), "创建", "失败");
            return null;
        }
        this.setInfo("文件名:" + newFile.getPath(), "创建", "成功");

        try {
            //将来自InputSteam中的流复制到目标路径下,如果不存在会自动创建,如果存在则会覆盖,然后关闭流。(也有不关闭流的方法,自己查)
            FileUtils.copyInputStreamToFile(fileInputStream, newFile);
            this.setInfo("文件名:" + newFile.getPath(), "写入", "成功");
        } catch (IOException e) {
            this.setError("文件名:" + newFile.getPath(), "写入", e.getMessage());
            return null;
        }
        //判断是否存在关联关系
        if ((uuid != null) && (!"".equals(uuid))) {
            try {
                AttachmentInfoModel attachmentInfoModel;
                attachmentInfoModel = saveAttachmentInfo(newFileName, name, uuid, type);
                if (attachmentInfoModel.attachmentInfoEntity == null) {
                    this.setError("存储数据库失败", "写入", "失败");
                    return null;
                }
            } catch (Exception e) {
                this.setError("保存数据库失败", "写入", "失败");
                e.printStackTrace();
                return null;
            }
        }
        //此处为返给前台的url路径,用来访问文件,并存取到数据库当中
        String fileUrl = ProjectUtil.getInstance().getSystemInfo().getAttachmentHost() + "/" + newFileName;
        this.setInfo("文件访问路径:" + fileUrl, "生成", "成功");
        fileUploadMap.put("fileUrl", fileUrl);
        //  }
        return fileUploadMap;
    }
/**
     * 获取文件名扩展名不包含点
     *
     * @param fileName 包含扩展名的文件名称
     * @return String 成功返回文件扩展名,失败返回null
     */
    public static String getExtensionName(String fileName) {
        int lastDotIndex = 0;
        String extensionName = null;
        if (fileName == null) {
            return null;
        }
        if (fileName.length() == 0) {
            return null;
        }
        lastDotIndex = fileName.lastIndexOf('.');
        //如果文件名当中没有.的话返回null
        if (lastDotIndex == -1) {
            return null;
        }
        //如果.是整个文件名的最后一个则不再能正确认识扩展名
        if (lastDotIndex == fileName.length()) {
            return null;
        }
        //得到文件扩展名不包含点
        extensionName = fileName.substring(lastDotIndex + 1);
        return extensionName;
    }
/**
     * 获取文件名扩展名包含点
     *
     * @param fileName 包含扩展名的文件名称
     * @return String 成功返回文件扩展名,失败返回null
     */
    public static String getDotExtensionName(String fileName) {
        String extensionName = null;
        String dotExtensionName = null;
        extensionName = getExtensionName(fileName);
        if (extensionName == null) {
            return null;
        }
        dotExtensionName = "." + extensionName;
        return dotExtensionName;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值