Vue获取服务端签名web端直传OSS,各种报错The bucket POST must contain the specified ‘key‘

ajax

1)ajax请求的原理/ 手写一个ajax请求?
2)readyState?
3)ajax异步与同步的区别?
4)ajax传递中文用什么方法?

ajax.PNG

前12.PNG

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

在这里插入图片描述

[具体的官方信息描述可以点击这里查看:

https://help.aliyun.com/document_detail/31927.html?spm=a2c4g.11186623.6.1744.17e03bd38ehYZz]( )


Vue获取服务端签名web端直传OSS


<a @click=“upload()” href=“javascript:;”>上传

这里需要注意的是:

如果你遇到了

<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n InvalidArgument\n The bucket POST must contain the specified 'key'. If it is specified, please check the order of the fields\n 60950F076AD6D5

这种错误的话,那么可能,是你的key字段不存在,这里所有的字段名称一定要和官方文档给定的一致,否则就会报错,注意大小写。

如果不是的话,那么你可能就是遇到了跟我一样的错误,如图所示:

在这里插入图片描述

在这里插入图片描述

查阅官方文档后,官方文档给出的解释是这样的,点击查看:

如图所示:

在这里插入图片描述

如果还有其他错误,可对照官方文档一步步排查。

Java后台授权代码


这里我也给贴出来吧,省得你再去翻看官方文档了:

有点多,你就看你有用的就行:

package cc.mrbird.febs.external.oss;

import cc.mrbird.febs.common.entity.FebsResponse;

import cc.mrbird.febs.common.exception.FebsException;

import cc.mrbird.febs.common.utils.RandomUtil;

import com.aliyun.oss.OSS;

import com.aliyun.oss.OSSClientBuilder;

import com.aliyun.oss.common.utils.BinaryUtil;

import com.aliyun.oss.model.*;

import lombok.Data;

import org.joda.time.DateTime;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Service;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

import java.io.*;

import java.net.URLEncoder;

import java.nio.charset.StandardCharsets;

import java.util.*;

/**

  • @ Author 马超伟

  • @ Date 2021-04-30 09:21

  • @ Description:

  • @ Version:

*/

@Data

@Service

public class OssFileUpload {

@Value(“${aliyun.oss.file.endpoint}”)

private String endpoint;

@Value(“${aliyun.oss.file.keyid}”)

private String accessKeyId;

@Value(“${aliyun.oss.file.keysecret}”)

private String accessKeySecret;

@Value(“${aliyun.oss.file.filehost}”)

private String fileHost;

@Value(“${aliyun.oss.file.bucketname}”)

private String bucketName;

@Value(“${aliyun.oss.file.callbackUrl}”)

private String callbackUrl;

@Value(“${aliyun.oss.file.baseDir}”)

private String dir;

public OSS getOssClient() {

OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);

return ossClient;

}

/**

  • @ Author: 马超伟

  • @ Date: 2021/4/30 10:59

  • @ Params: [file, basePath]

  • @ return: java.lang.String

  • @ Description: 文件上传

*/

public String upload(MultipartFile file, String basePath) {

String uploadUrl;

try {

//判断oss实例是否存在:如果不存在则创建,如果存在则获取

OSS ossClient = getOssClient();

//获取上传文件流

InputStream inputStream = file.getInputStream();

//构建日期路径:avatar/2019/02/26/文件名

String filePath = new DateTime().toString(“yyyy/MM/dd”);

//文件名:uuid/原始文件名到后缀

String original = file.getOriginalFilename();

String fileName = RandomUtil.getLinkNo();

String newName = fileName + “/” + original;

String fileUrl = basePath + “/” + filePath + “/” + newName;

//文件上传至阿里云

ossClient.putObject(bucketName, fileUrl, inputStream);

// 关闭OSSClient。

ossClient.shutdown();

//获取url地址

uploadUrl = fileHost + “/” + fileUrl;

} catch (IOException e) {

throw new FebsException(“文件上传异常!”);

}

return uploadUrl;

}

/**

  • @return List 文件路径和大小集合

  • @ Param ossClient oss客户端

  • @ Param bucketName bucket名称

  • @Title: queryAllObject

  • @ Description: 查询某个bucket里面的所有文件

*/

public List queryAllObject() {

List results = new ArrayList<>();

try {

// ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。

ajax

1)ajax请求的原理/ 手写一个ajax请求?
2)readyState?
3)ajax异步与同步的区别?
4)ajax传递中文用什么方法?

ajax.PNG

前12.PNG

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

queryAllObject

  • @ Description: 查询某个bucket里面的所有文件

*/

public List queryAllObject() {

List results = new ArrayList<>();

try {

// ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。

ajax

1)ajax请求的原理/ 手写一个ajax请求?
2)readyState?
3)ajax异步与同步的区别?
4)ajax传递中文用什么方法?

[外链图片转存中…(img-NGA1jQ9a-1715241203438)]

[外链图片转存中…(img-qEhwanh8-1715241203439)]

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值