简单使用使用阿里云对象存储OSS上传文件包括工具类_依赖

使用阿里云对象存储OSS(官网文档)上传文件(学习笔记) 注:要先去官网开通对象存储OSS

前端代码(html或者jsp页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>个人文件上传test网站</title>
</head>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<body>
    <!--必须是表单包起来  有name属性-->
    <form id="inputForm">
        <input type="file" name="updateUrl" onchange="updatefile()">
    </form>
    <div>
        <table>
            <tr>
                <td id="tset">
                    <!--回显上传后的连接-->
                </td>
            </tr>
        </table>
    </div>
</body>
    
    
<script type="text/javascript">
    function updatefile() {
        var formData = new FormData($("#inputForm")[0]);
        $.ajax({
            url: "/test/updatefile",
            async: false,
            type: "POST",
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            success: function (updateVersionFile) {
                 //插入个 a标签 回显示地址
                $("#tset").html("<a href=\""+updateVersionFile+"\">点击查看</a>");
            }
        });
    }
</script>
</html>

后端代码(控制层)

/**
     * 文件上传
     * @param multipartFile
     * @return
     */
 @PostMapping("/updatefile")
    public String getlist(@RequestParam(value = "updateUrl", required = false) MultipartFile multipartFile){
        InputStream inputStream=null;
        try {
            inputStream = multipartFile.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //拼接文件夹名字会指定上传到存储空间下面的子文件夹
        String originalFilename = "meinv/"+multipartFile.getOriginalFilename();
        //使用封装的工具类进行上传
        OssManager.uploadBucketImage("chenzhihao-space", originalFilename, multipartFile.getSize(), inputStream);
        //不需要查询直接拼接域名访问文件返回也是可以的
        String url="chenzhihao-space.oss-cn-shenzhen.aliyuncs.com/"+ "meinv/" +multipartFile.getOriginalFilename();
        //第2种方式查询上传文件后的访问地址
        //String url = OssManager.getUrl(originalFilename);
        return url;
    }

访问域名带上文件路径,即可通过互联网访问到 Bucket 内的任意文件。如果 ACL 是私有读,则还需要带上签名,URL 拼写规则:chenzhihao-*****.oss-cn-shenzhen.aliyuncs.com/meinv/文件名

配置文件(springmvc.xml):

<!-- 配置多媒体解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"></property>
        <!-- 设定文件上传的最大值100MB,100*1024*1024 -->
        <property name="maxUploadSize" value="104857600"></property>
    </bean>

**阿里云(OSS)的上传工具类:

package com.dome.ossutil;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;

import java.io.InputStream;
import java.net.URL;
import java.util.Date;

/**
 * @Description: TODO 阿里云开放存储服务 工具类
 * @date 2019年8月8日
 * @author *
 */
public class OssManager {
	private static final String accessKeyId = "LT***********"; //需要修改的   个人开发id
	private static final String accessKeySecret = "Llf**************"; //需要修改的    开发密匙
	/**
	 * 需要修改
	 * 根据选择的存储空间地点选择:https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.2.10.5d396a3eVRGHxs#h2-url-1
	 */
	private static final String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
	/**
	 * 需要修改的存储空间的名称
	 */
	public static final String bucket = "chenzhihao";

	private static OSS client;

	static {
			client   =  new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
	}

	/**
	 * 上传图片
	 * @param fileName 图片名称,图片名称包括文件夹名称和“/”
	 * @param length 图片大小
	 * @param content 输入流
	 */
	public static void uploadImage(String fileName, long length, InputStream content) {
		uploadBucketImage(bucket, fileName, length, content);
	}

	/**
	 * 上传文件
	 * @param bucket 存储空间名
	 * @param fileName 文件名(包括文件夹名称和“/”)
	 * @param length 流的长度
	 * @param content 输入流
	 */
	public static void uploadBucketImage(String bucket, String fileName, long length, InputStream content) {
		// 创建上传Object的Metadata
		ObjectMetadata meta = new ObjectMetadata();
		// 必须设置ContentLength
		meta.setContentLength(length);

		// 上传Object.
		client.putObject(bucket, fileName, content, meta);
	}

	/**
	 * 删除文件
	 * @param fileName 文件名称,图片名称包括文件夹名称和“/”
	 */
	public static boolean delShopImage(String fileName) {
		//判断文件是否存在
		boolean exist = client.doesObjectExist(bucket, fileName);
		//文件不存在删除失败
		if ( ! exist){
		    return false;
		}
		//执行删除
		client.deleteObject(bucket, fileName);
		return true;
	}

	/**
	 * 获得上传文件后url链接
	 * @param fileName 文件名(包括文件夹名称和“/”)
	 * @return
	 */
	public static String getUrl(String fileName) {
		// 设置URL过期时间为10年  3600l* 1000*24*365*10
		Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);
		// 生成URL
		URL url = client.generatePresignedUrl(bucket, fileName, expiration);
		if (url != null) {
			return url.toString();
		}
		return null;
	}


	/**
	 * 创建存储空间
	 * @param bucketName 新建存储空间默认为标准存储类型,私有权限。
	 * @return
	 */
	public static void crateBucket(String bucketName) {
		// 新建存储空间默认为标准存储类型,私有权限。
		client.createBucket(bucketName);
	}

}

**pom文件依赖:

 <!--oss文件上传-->
    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.5.0</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.1</version>
    </dependency>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懵懵懂懂程序员

如果节省了你的时间, 请鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值