后端处理图片的上传和下载

简介: 后端处理图片的上传和下载

之前弄了前端的图片上传与下载,但是做后端的时候还是需要放在后端来处理比较好,话不多说直接上代码


上传


这里的R.success是我自定义的返回类型的方式,只需要返回给前端文件名就行

 static String originalFilename;
    static String basePath;
    @PostMapping("/upload")
    //只需要返回上传文件的名称
    public R<String> upLoad(MultipartFile file){
         log.info(file.toString());
         originalFilename="";
         basePath="";
         originalFilename = file.getOriginalFilename(); //文件名
         //UUid防止文件名的覆盖
        String s = UUID.randomUUID().toString();
        originalFilename=chageString(s);
        basePath="D:\\"+"imag\\";  //自定义存放路径
        try {
            //文件的创建
            File file1=new File(basePath);
            if(!file1.exists()){ //如果不存在该路径下的文件
                file1.mkdirs();
            }
            //文件的转存
            file.transferTo(new File(basePath+originalFilename));
        }catch (Exception e){
            e.getMessage();
        }
        return R.success(originalFilename);
         }
   public static String chageString(String s){ //处理图片名的前缀
       String[] split = originalFilename.split(".");
       return s+"."+split[1];


下载


 /**
     * 文件的下载--已输出流的方式进行下载
     * 可以通过response获得输出流的方式
     * @Param name--为上传函数中返回到前端的 /*文件名称*/
     */
    @GetMapping("/download/{name}")
    public void downLoad (@PathVariable("name") String name, HttpServletResponse response) throws IOException{
         //输入流--换为流的方式来读取文件的内容,从磁盘输入到内存中;从文件系统中的文件获取输入字节。 
        FileInputStream fileInputStream=new FileInputStream(basePath+name);
         //输出流--文件从内存输出到磁盘中,将文件写回浏览器,并实现展示
        ServletOutputStream outputStream = response.getOutputStream();//获取输出流的方式
        byte[] bytes=new byte[1024];
        int len=0;
        response.setContentType("image/jpeg");///设置一下输出的数据类型,我这里设置的是jpeg
        while ((len=fileInputStream.read(bytes))!=-1){
             outputStream.write(bytes,0,len+1);
             outputStream.flush();
        }
         outputStream.close();
         fileInputStream.close();
    }


在做该功能的时候,无论的是前端实现还是后端实现,应该是要根据自己项目的情况来定,当然我们得首先要学会这两种的实现方式。

目前还在学习阶段,有什么问题可以提出,一起学习!

目录
相关文章
|
6月前
|
前端开发
前端接受后端文件流并下载到本地的方法
前端接受后端文件流并下载到本地的方法
1527 0
后端返回base64格式数据转excel格式文件并下载
后端返回base64格式数据转excel格式文件并下载
243 0
|
2月前
|
前端开发
后端返回图片二进制流,前端转base64
本文介绍了如何将后端返回的图片二进制流转换为Base64格式,以便在前端使用。通过在axios请求中设置`responseType`为`arraybuffer`,然后使用`btoa`和`Uint8Array`进行转换。
258 5
|
1月前
|
JavaScript 前端开发 API
vue获取图片的blob传给django后端
vue获取图片的blob传给django后端
37 4
|
1月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
21 1
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
110 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
1月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
535 1
|
4月前
|
JavaScript 前端开发
【vue】 vue2 canvas实现在图片上选点,画区域并将 坐标传递给后端
【vue】 vue2 canvas实现在图片上选点,画区域并将 坐标传递给后端
154 0
|
4月前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
|
5月前
|
存储 前端开发 Java
Spring第三课,Lombok工具包下载,对应图书管理系统列表和登录界面的后端代码,分层思想
Spring第三课,Lombok工具包下载,对应图书管理系统列表和登录界面的后端代码,分层思想

热门文章

最新文章

下一篇
无影云桌面