将file转化为MultipartFile-----适用于后端直接传文件路径 不从前端页面上传

/**
 * 上传文件工具类
 * @param file
 * @return
 */
public Results upload(MultipartFile file) {
    Results rs = new Results();
    String fileName = file.getOriginalFilename();
    String suffix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
    if(!Arrays.asList("jpg","png","bmp","doc","docx","pdf").contains(suffix)){
        rs.setStatusCode(Contents.requestFail);
        rs.setStatusMsg("上传文件格式不正确!");
        return rs;
    }
    try {
        //文件存放路径
        String filePath = CaseStringUtils.getDateForString(System.currentTimeMillis()+"", "yyyy") //年份
                + "/" + CaseStringUtils.getDateForString(System.currentTimeMillis()+"", "MM") //月份
                + "/" + CaseStringUtils.getDateForString(System.currentTimeMillis()+"", "dd");
        File tmpPath = new File(fileTmpPath +"/"+ filePath);
        if (!tmpPath.exists()){//若此目录不存在,则创建
            tmpPath.mkdirs();
            log.info("创建目录路径为:"+ filePath);
        }
        if (null != file) {
            log.info("保存上传文件:"+ file.getName());

            //生成文件的名称和缩略图的文件名称
            Long temp = System.nanoTime();
            String fileSaveName = temp + "." + suffix;
            String localPath = fileTmpPath +"/"+ filePath +"/"+ fileSaveName;
            File dest = new File(localPath);
            file.transferTo(dest);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("suffix",suffix);
            map.put("filePath",filePath);
            rs.setResMap(map);
            rs.setStatusCode(Contents.requestSuccess);
            rs.setStatusMsg("上传文件成功");
            rs.setTimestamp(String.valueOf(System.currentTimeMillis()));
            return rs;
        }else{
            rs.setStatusCode(Contents.requestSuccess);
            rs.setStatusMsg("没有上传文件");
            return rs;
        }
    }catch(Exception e){
        e.printStackTrace();
        rs.setStatusCode(Contents.requestFail);
        rs.setStatusMsg("上传失败");
    }
    log.info(JSON.toJSONString(rs));
    return rs;

}


/**
 * 将文件路径转换成FileItem
 * @param filePath
 * @return
 */
public static FileItem createFileItem(String filePath)
{
    FileItemFactory factory = new DiskFileItemFactory(16, null);
    //String textFieldName = "textField";
    int num = filePath.lastIndexOf(".");
    String extFile = filePath.substring(num);
    FileItem item = factory.createItem(filePath, "text/plain", true,
            filePath + extFile);
    File newfile = new File(filePath);
    int bytesRead = 0;
    byte[] buffer = new byte[8192];
    try
    {
        FileInputStream fis = new FileInputStream(newfile);
        OutputStream os = item.getOutputStream();
        while ((bytesRead = fis.read(buffer, 0, 8192))
                != -1)
        {
            os.write(buffer, 0, bytesRead);
        }
        os.close();
        fis.close();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    return item;
}

 

/**
 * 描述:Test
 *
 * @author 何志鹏
 * @ClassName:Test
 * @create 2019-09-23 14:54
 * Version 1.0
 */
@RestController
@RequestMapping("/file")
public class Test {
@Autowired
private FileAPIUtils fileAPIUtils;
    @Autowired
    private FileFeignClient fileFeignClient;
    @Value("${file.fileTmpPath}")
    private String fileTmpPath;

方法一:
@RequestMapping("/uploadTest")
public Results download()throws  Exception{
    String path = "D:/13639685_123501617185_2.jpg";
    FileItem fileItem = createFileItem(path);
    MultipartFile mfile = new CommonsMultipartFile(fileItem);
    Results upload = fileAPIUtils.upload(mfile);
    return upload;
}

方法二:不使用createFileItem这个工具类  直接用DiskFileItem类

@RequestMapping("/uploadTest2")
public Results downloads()throws  Exception{
    File file = new File("C:/tmpdir/15707688186414892.pdf");
    DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory().createItem("file",MediaType.TEXT_PLAIN_VALUE, true, file.getName());

    try (InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()) {
        IOUtils.copy(input, os);
    } catch (Exception e) {
        throw new IllegalArgumentException("Invalid file: " + e, e);
    }

    MultipartFile mfile = new CommonsMultipartFile(fileItem);
    Results upload = fileAPIUtils.upload(mfile);
    return upload;
}




}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用SSM(Spring+SpringMVC+MyBatis)作为后端框架,Element UI作为前端组件库,通过阿里云的文件上传功能将文件前端上传后端的数据库中。 首先,在前端页面中使用Element UI的上传组件来实现文件选择和上传功能。你可以参考Element UI的文档,使用`el-upload`组件来创建一个文件上传的按钮,并设置相应的属性,比如上传地址、上传方式等。 在后端,你需要编写相应的接口来处理文件上传的请求。可以使用Spring MVC来处理前端的请求,接收文件并将其存储到数据库中。你可以使用MyBatis来操作数据库。 在接收文件后端接口中,你可以使用`MultipartFile`类型的参数来接收前端上传文件。你可以通过该参数获取文件的相关信息,比如文件名、大小等。然后,你可以将文件保存到数据库中,可以将文件内容直接以二进制形式存储,或者将文件存储到服务器的文件系统中,并将文件路径存储到数据库中。 在处理文件上传的过程中,你需要注意文件大小的限制、文件类型的限制等,以保证上传文件符合你的需求。 总结起来,你可以使用SSM作为后端框架,Element UI作为前端组件库,通过阿里云的文件上传功能将文件前端上传后端的数据库中。前端使用Element UI的上传组件来实现文件选择和上传功能,后端编写相应的接口来处理文件上传的请求,使用MultipartFile来接收前端上传文件,并将文件保存到数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值