记录一下阿里云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中一定要这样配置,否则上传成功页无法访问,会一直提示跨域问题

跨域设置,添加规则

公共访问,必须关闭

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

相关推荐
TG_yunshuguoji2 小时前
亚马逊云代理商:如何使用 CloudWatch 监控 AWS Lambda 函数日志?
云计算·aws·lambda·云服务器·cloudwatch
看海的四叔2 小时前
【Python】阿里云 DataWorks + ODPS + 钉钉联动实战:配合[特殊字符]全搞定
python·阿里云·api·odps·requests·openclaw
小夏子_riotous14 小时前
Docker学习路径——2、安装
linux·运维·分布式·学习·docker·容器·云计算
TMT星球18 小时前
阿里云连续5年稳居游戏云市场份额第一
游戏·阿里云·云计算
小白勇闯网安圈18 小时前
腾讯云服务器部署Dify
服务器·人工智能·云计算·腾讯云
翼龙云_cloud20 小时前
阿里云代理商:详解阿里云部署OpenClaw 且接入Playwright指南
人工智能·阿里云·云计算·openclaw
同聘云21 小时前
腾讯云国际站服务器防火墙怎么关闭?防火墙部署方式有哪些??
云计算·腾讯云·云小强
ZeroNews内网穿透1 天前
ZeroNews安全网关接入企业微信自建应用
网络·数据库·安全·云计算
天上的光1 天前
云计算——基本概念
云计算