uniapp使用华为云OBS进行上传

前言:无论是使用华为云还是阿里云,使用其产品的时候必须阅读文档

1、以华为云为例,刚接触此功能肯定是无从下手的情况,那么我们需要思考,我们使用该产品所用到的文档是什么
在这里插入图片描述

2、我们要使用obs 文件上传,肯定是通过其api 而不是sdk 进行开发,所以我们要先找到obs文档内的使用api 所在页面
在这里插入图片描述

3、直接定位到文档,根据需求进行开发
在这里插入图片描述
4、我们还可以查询是否有以往例子作为参考,但绝对要以文档为主
5、如果有解决不了的问题,创建工单进行处理,不要死磕!
6、注意:参考的例子只能做参考 !!!

功能需求背景:在采煤过程中,井下作业没有网络,进而使用局域网,无法将文件上传到数据库,所以采用,uniapp 写了一个app 来处理上传的功能

1、有需要由后端人员创建obs 桶, 对象存储服务:同列表 ,找到需要存储的桶数据
在这里插入图片描述
2、需要从后端人员处要到如下参数:
在这里插入图片描述
需要通过这两个参数进行编译出 :policy 和 signature 参数
在这里插入图片描述
配合 :uniapp 上传api 进行上传!!
在这里插入图片描述
传值代码块如下

let config = {
   url: OBSConfig.host, // 访问桶的域名
   filePath, // 文件地址(绝对路径)
   name: 'file',
   formData: {
	ObsAccessKeyId:OBSConfig.accessid,
	policy: OBSConfig.policyBase64,
	signature: OBSConfig.signature,
	success_action_status: '200',
	key, // 上传文件名字
   },
   success(res) {
     if (res.statusCode === 200) {
       resolve(key)
     } else {
       reject(res)
     }
   },
   fail(err) {
     reject(err)
   }
 }
 uni.uploadFile(config)  // 使用 uniapp 上传 

由此我们可以看到 ,uni 上传文件的 成功 和 失败回调,进行其他处理

注意我们使用:policy 编译健全内容的时候:conditions 数组里面的值,要与formdata 里面的值保持一致,不然会报错,!!!!注意,不写status的时候, 300 一下都是成功, 我当时 是 204 ,以为是报错信息, 一直debugger ,最后发现是成功
在这里插入图片描述
在这里插入图片描述

缺点:
1、uni 无法回调给出错误码,只有状态码码,不能明确的定位报错信息
2、华为云OBS对于传值的,key 不能确定,可能还是文档阅读问题,文档没有明确的信息
3、开发为app,使用的模拟器,无法从控制台定位信息(还是因为uni的上传回调问题)
ps: 如果能给错误码,我们可以查看 :https://support.huaweicloud.com/api-obs/obs_04_0115.html 对应的错误码值进行修改
不能看到解决,问题就是: 创建工单咨询 人工。。。

代码参考:https://juejin.cn/post/7109335204396810277?searchId=20240305134317BF152ADF70BD4A725457
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Spring Boot 和华为云 OBS SDK 来上 MultipartFile 对象到华为云 OBS。下面是一个示例代码: 1. 首先,你需要在 pom.xml 文件中添加华为云 OBS 的依赖: ```xml <dependency> <groupId>com.obs</groupId> <artifactId>obs-sdk-java</artifactId> <version>3.20.0</version> </dependency> ``` 2. 然后,你需要配置华为云 OBS 的相关信息,如 accessKey、secretKey、endpoint 等。你可以将这些信息放在 application.properties 或 application.yml 文件中,如: ```yaml huawei: obs: accessKey: yourAccessKey secretKey: yourSecretKey endpoint: yourEndpoint bucketName: yourBucketName ``` 3. 接下来,创建一个 Service 类来处理文件上的逻辑: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import com.obs.services.ObsClient; import com.obs.services.model.PutObjectRequest; import java.io.IOException; @Service public class ObsService { @Value("${huawei.obs.accessKey}") private String accessKey; @Value("${huawei.obs.secretKey}") private String secretKey; @Value("${huawei.obs.endpoint}") private String endpoint; @Value("${huawei.obs.bucketName}") private String bucketName; public void uploadFile(MultipartFile file) throws IOException { ObsClient obsClient = new ObsClient(accessKey, secretKey, endpoint); PutObjectRequest request = new PutObjectRequest(bucketName, file.getOriginalFilename(), file.getInputStream()); obsClient.putObject(request); obsClient.close(); } } ``` 4. 最后,在你的 Controller 中使用 ObsService 类来处理文件上请求: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @RestController public class FileUploadController { @Autowired private ObsService obsService; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { try { obsService.uploadFile(file); return "File uploaded successfully."; } catch (IOException e) { return "Failed to upload file."; } } } ``` 以上就是使用 Spring Boot 和华为云 OBS SDK 上 MultipartFile 的示例代码。确保你已经正确配置了华为云 OBS 的相关信息,并根据你的实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值