基于表单来提交图片到OSS存储

当我们把图片保存到服务器时,我们发现访问项目时,图片加载过慢,影响体验。我们可以使用阿里云的OSS来存储图片,它可以提供快速的图片响应,提升用户体验,下面介绍一下用法(比官网文档简洁)。

1.前端

<form action=“自己controller路径” method=“post” enctype=“multipart/form-data”>
    <label for=“article-img”>图片</label>
    <input type=“file” id=“article-img” name=“picture” accept=“image/*”/>上传文章封面图片(非必选)
</form>

2.后端

2.1引入依赖

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

2.2创建一个工具类(根据自己喜好)

@Configuration
public class OssUtils {
    public OSS oSSClientBuilderFile(MultipartFile path) throws IOException {
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "“;
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = ”“;
        String accessKeySecret = ”“;
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
        String name = path.getOriginalFilename();
        String format = new SimpleDateFormat(”YYYY-MM-dd“).format(new Date());
        InputStream inputStream = path.getInputStream();
        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
        ossClient.putObject(”自己的bucket名称“,format+/+name, inputStream);
        return ossClient;
    }
}

2.3编写Controller

@Controller
public class AdminArticleController {
   @Autowired
    OssUtils ossUtils;

    @PostMapping(”article/addNew“)
    public String addNew(@RequestParam(”picture“) MultipartFile file){
   	OSS oss = ossUtils.oSSClientBuilderFile(file);
        oss.shutdown(); //关闭后oss不可用
     //可根据自己业务需求,是否需要保存图片地址到数据库
        String name = file.getOriginalFilename(); //获取文件名
        String format = new SimpleDateFormat(”YYYY-MM-dd“).format(new Date());
        String url = ”自己bucket的访问路径“;
        String picture = url + format +/" + name;
        //保存数据…
 }
}

到此,使用表单上传图片到OSS并获取图片地址的操作就完成了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中将图片上传到OSS(阿里云对象存储),可以使用阿里云提供的Java SDK进行操作。以下是一个简单的实现步骤: 1.添加依赖 在你的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.1</version> </dependency> ``` 2.配置OSS客户端 在你的application.properties文件中添加OSS的配置信息: ```properties aliyun.oss.endpoint=oss-cn-hangzhou.aliyuncs.com aliyun.oss.accessKeyId=yourAccessKeyId aliyun.oss.accessKeySecret=yourAccessKeySecret aliyun.oss.bucketName=yourBucketName ``` 接着,创建一个OSS客户端实例: ```java @ConfigurationProperties(prefix = "aliyun.oss") @Component public class OSSClientConfig { private String endpoint; private String accessKeyId; private String accessKeySecret; private String bucketName; @Bean public OSSClient ossClient() { return new OSSClient(endpoint, accessKeyId, accessKeySecret); } // getters and setters } ``` 3.编写上传代码 在你的Controller中编写上传代码: ```java @RestController @RequestMapping("/upload") public class UploadController { @Autowired private OSSClient ossClient; @PostMapping("/image") public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) { try { // 获取文件名 String fileName = file.getOriginalFilename(); // 创建一个唯一的文件名 String uniqueFileName = UUID.randomUUID().toString() + "_" + fileName; // 上传文件到OSS ossClient.putObject("yourBucketName", uniqueFileName, file.getInputStream()); // 返回文件的访问URL String fileUrl = "https://yourBucketName.oss-cn-hangzhou.aliyuncs.com/" + uniqueFileName; return ResponseEntity.ok(fileUrl); } catch (IOException e) { e.printStackTrace(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("上传失败"); } } } ``` 这段代码将上传的文件存储OSS,并返回文件的访问URL。 以上就是一个简单的Spring Boot上传图片OSS的实现方式。当然,还有很多细节需要注意,比如上传文件的大小限制等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值