欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

31 多媒体文件操作简述

程序员文章站 2024-03-02 18:48:22
...

文件上传(图片等多媒体文件)

jsp页面中form表单标签上开启多媒体属性enctype="multipart/form-data"即可在需要的位置插入多媒体文件即可
封装VO对象 --封装多媒体文件的对象
{“error”:0,“url”:“图片的保存路径”,“width”:图片的宽度,“height”:图片的高度}
说明:
error: 代表文件上传的错误. 0 文件上传正确 1.文件上传失败.
url地址: 访问图片的网络地址… 用户通过url地址获取图片信息
访问图片的物理地址… 真实存储的地址 D:/a/a.jpg

package com.jt.vo;
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class ImageVO implements Serializable {
    //{"error":0,"url":"图片的保存路径","width":图片的宽度,"height":图片的高度}
    private Integer error;
    private String  url;     //图片虚拟访问路径
    private Integer width;  //宽度
    private Integer height; //高度
    //success  fail
    public static ImageVO fail(){
        return new ImageVO(1,null,null,null);
    }    
    public static  ImageVO success(String url,Integer width,Integer height){
        return new ImageVO(0, url, width, height);
    }
}

image.properties配置文件

image.dirPath=D:/JT-SOFT/images
image.urlPath=http://image.jt.com

controller层 --先保存到本地,再取出展示在页面上
接收请求及浏览器传来的参数多媒体文件(MultipartFile fileImage)
多媒体文件保存到本地磁盘并返回给浏览器一个可访问图片的url地址
接收请求及参数(多媒体文件(MultipartFile uploadFile))
业务逻辑交给service层执行
controller中直接调用service层传参(多媒体文件)加载多媒体文件到服务器磁盘方法返回值时ImageVO对象
service层
从配置文件中获取到url地址及保存的服务器的物理地址
创建静态成员变量set集合(去重)存放图片文件的后缀名
静态代码块中为set集合赋值(图片的常用.后缀名)
定义将多媒体文件(图片)保存到服务器磁盘的方法并返回ImageVO对象(里面有图片的虚拟url访问路径,nginx中反向代理到本地磁盘真实访问路径即可)
1 通过多媒体文件调用getOriginFilename()方法获取图片文件的全名
2 字符串类型toLowerCase全部转化为小写
3 调用lastIndexOf(".")获取最后一个点的索引
4 根据索引切割字符串(包含了.)substring(index)获取到图片文件的.后缀
5 判断set集合中是否包含有该后缀,若没有则一定不是图片文件返回错误提示"用户上传的不是图片"
6 再创建BufferedImage对象,专门负责封装图片的工具类可以获取到图片的宽高属性
创建BufferedImage对象是通过图片IO对象ImageIO的API read方法获取到该多媒体文件的字节流封装为BufferedImage对象
通过bufferedImage对象获取宽高属性判断不为0即可
7 创建分目录存放图片的目录 --时间方式存储解析时间前后都要加斜杠
String dateDir = new SimpleDateFormat("/yyyy/MM/dd/").format(new Date());
组合出真正的文件存放目录dirPath+dateDir封装为File对象imageFileDir --服务器存放路径+生成的时间分目录路径
8 实现文件上传
UUID.后缀 --realFileName(真正的文件存放名称)
封装为真正最终要存储的的文件对象(imageDir+realFileName) --imageFile
9 多媒体文件调用执行上传方法transferTo(imageFile),完成上传业务
10 动态生成url地址
String url = urlPath+dateDir+realFileName;
return ImageVO.success(url,width,height);
返回ImageVO对象即可