原创

springboot 2.x 实现文件(图片视频)上传


上传到本地服务器

controller

    public boolean upload(MultipartFile file) throws IOException{
        //创建一个文件输出流对象
        FileOutputStream fileOutputStream=null;
        //创建一个输入流对象
        InputStream inputStream=null;
        //文件的命名空间
        String fileSpace="E:/file";
        //文件保存的相对路径
        String upLoadPathDb="/images";
        // String upLoadPathDb="/video";
        try {
            //判断传入的文件是否为空
            if (file!=null){
                //获取到传入的文件名称
                String filename = file.getOriginalFilename();
                //判断该文件名是否为空
                if (!StringUtils.isEmpty(filename)){
                    //获得该文件的绝对路径
                    String finalPath=fileSpace+upLoadPathDb+"/"+filename;
                    //获得该文件存入数据库的相对路径
                    upLoadPathDb=upLoadPathDb+"/"+filename;
                    File f=new File(finalPath);
                    if (f.getParentFile()!=null || !f.getParentFile().isDirectory()){
                        //创建该文件所在目录的文件夹
                        f.getParentFile().mkdirs();
                    }
                    fileOutputStream=new FileOutputStream(f);
                    inputStream=file.getInputStream();
                    IOUtils.copy(inputStream,fileOutputStream);
                }
            }
        } catch (Exception e) {
            return false;
        }finally {
            if (fileOutputStream!=null){
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        }
        return true;
    }
}

application.properties

spring.servlet.multipart.max-file-size = 10MB  
spring.servlet.multipart.max-request-size = 100MB

pom.xml

<!--文件上传组件-->
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-io</artifactId>
   <version>1.3.2</version>
</dependency>

上传到阿里OSS

controller

public JSONResult uploadFace(String userId, MultipartFile file) throws IOException {
        if (StringUtils.isBlank(userId)) {
            return JSONResult.errorMsg("用户ID不能为空");
        }

        //保存到数据库的相对路径
        String uploadPathDB = userId + "/face";

        //文件上传的最终保存路径
        String finalFacePath = null;

        InputStream inputStream = null;
        try {
            if (file != null) {
                String filename = file.getOriginalFilename();
                if (StringUtils.isNotBlank(filename)) {
                    finalFacePath = uploadPathDB + "/" + filename;
                    
                    // 上传文件至阿里OSS
                    inputStream = file.getInputStream();
                    OssUtils.uploadFile(finalFacePath, inputStream);
                }
            } else {
                return JSONResult.errorMsg("上传失败");
            }
        } catch (IOException e) {
            return JSONResult.errorMsg("上传失败");
        }
        //数据库更新用户信息
        Users user = new Users();
        user.setId(userId);
        // 往数据库存需要加/
        uploadPathDB = "/" + finalFacePath;
        user.setFaceImage(uploadPathDB);
        userService.updateUserInfo(user);
        return JSONResult.ok(uploadPathDB);
    }
   

OssUtils

/**
 * Aliyun OSS using the OSS SDK for Java.
 */
public class OssUtils {
	String endpoint = "http://oss-cn-**.aliyuncs.com";
	String accessKeyId = "<yourAccessKeyId>";
	String accessKeySecret = "<yourAccessKeySecret>";
	String bucketName = "<yourBucketName>";

	/**
     * @Param: fileName 上传文件到OSS时需要指定包含文件后缀在内的完整路径
     * @Param inputStream
     * @return: void
     * @Description: 上传文件
     */
    public static void uploadFile(String fileName, InputStream inputStream) throws IOException {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上传文件流。
        ossClient.putObject(bucketName, fileName, inputStream);
        // 关闭OSSClient。
        ossClient.shutdown();
    }
}

pom.xml

<!--文件上传组件-->
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-io</artifactId>
   <version>1.3.2</version>
</dependency>

<!--Aliyun OSS SDK for Java-->
<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-core</artifactId>
   <version>4.1.0</version>
</dependency>
Java
Springboot

评论