记录一下阿里云OSS直接通过web端或者其他的前端上传文件时,bucket配置过程

当我们上次文档到oss,不通过后端上传,而是改用直接通过前端直连上传时,应该怎么处理?

1.后端接口根据规则返回如下相关参数

2.我的前端代码如下,代码执行后直接返回了url文件地址

html 复制代码
/**
 * 前端直传 OSS,返回可公开访问的文件 URL
 */
export async function uploadVideoToOss(file: File): Promise<string> {
  const signRes = await useClientRequest<AppResp<OssSignData>>('app/video/getOssUploadSign', {
    method: 'GET',
    params: { fileName: file.name },
  })
  if (!signRes || signRes.code !== 200 || !signRes.data) {
    throw new Error(signRes?.msg || '获取上传签名失败')
  }
  const sign = signRes.data
  const formData = new FormData()
  formData.append('key', sign.key)
  formData.append('policy', sign.policy)
  formData.append('OSSAccessKeyId', sign.accessKeyId)
  formData.append('signature', sign.signature)
  formData.append('success_action_status', '200')
  formData.append('file', file)

  const uploadUrl = (sign.uploadUrl || '').replace(/\/$/, '')
  await new Promise<void>((resolve, reject) => {
    const xhr = new XMLHttpRequest()
    xhr.open('POST', uploadUrl)
    xhr.withCredentials = false
    xhr.timeout = 120000
    xhr.onload = () => {
      if (xhr.status >= 200 && xhr.status < 300) {
        resolve()
        return
      }
      reject(new Error(`OSS上传失败:HTTP ${xhr.status}`))
    }
    xhr.onerror = () => reject(new Error('OSS上传失败,请检查网络或跨域配置'))
    xhr.ontimeout = () => reject(new Error('OSS上传超时'))
    xhr.send(formData)
  })
  const base = (sign.domain || sign.uploadUrl || '').replace(/\/$/, '')
  return `${base}/${sign.key}`
}

3.下面这步很重要,OSS中一定要这样配置,否则上传成功页无法访问,会一直提示跨域问题

跨域设置,添加规则

公共访问,必须关闭

读写权限,必须设置公共读

相关推荐
边境悍匪4 小时前
蜗牛学苑 Java 智能体学习 Day39|SpringAI 会话存储、Function‑Call 工具调用、MCP 思维导图复盘
java·开发语言·spring boot·学习·阿里云
yunlaodacom5 小时前
腾讯云国际版代理商:COS标准、低频、归档和深度归档怎么选?存储成本与数据取回区别
数据库·云计算·腾讯云
sbjdhjd6 小时前
从 assert 动态调用报错到临时文件链路:PHP 5.6 与 7.3 授权靶场中的短 payload 复盘 | (17字符绕过)
安全·网络安全·数据挖掘·开源·云计算·php·字符绕过
sbjdhjd6 小时前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
mengge.cloud21 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算
山海鲸实战案例分享1 天前
山海鲸可视化VS DataV:项目交付之后,谁能持续跟上业务变化
阿里云·数字孪生·数据可视化·零代码·datav·山海鲸可视化
QYR-分析1 天前
蓝海赛道高速扩容!全球小型观察ROV市场格局、细分场景与发展趋势分析
大数据·运维·云计算
weixin_493503671 天前
商会小程序附件上传:分片上传 + OSS 直传完整实现(Vue3 + 阿里云 OSS 实战)
阿里云·小程序·云计算
workflower1 天前
人形机器人技术与产业基础
机器人·云计算·软件工程·需求分析·软件需求
论文复现现场1 天前
单卡RTX 3090能训练,切到4卡却OOM:Accelerate多卡训练怎么排查?
人工智能·pytorch·云计算·gpu算力·多卡训练