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

跨域设置,添加规则

公共访问,必须关闭

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

相关推荐
牛奶咖啡139 小时前
云计算平台应用实践——云计算与云平台
云计算·云平台·云平台的三大服务模式·云计算与云平台的关系·laas paas saas·云平台的主流架构·国内外的主流云平台对比与选型
逐流人1 天前
手工建集群到全自动发布:k8s集群部署与DevOps流水线整合实战
ci/cd·云原生·kubernetes·云计算·devops
wz97542 天前
走进云计算:从硬件到云平台,读懂数字化底层基石
云计算
Kari112 天前
企业大模型RAG知识库从0到1搭建指南:腾讯云ADP+JOTO实战
人工智能·云计算·腾讯云
Kari112 天前
企业级智能体平台怎么选:腾讯云ADP与其他主流技术路线的架构对比
架构·云计算·腾讯云
无所畏俱的老尹4 天前
Agent 落地为什么需要影子对照:同输入只读双跑、写动作变提案、差异报警,比直接切全量更安全
人工智能·机器学习·云计算·aigc·devops
逐流人5 天前
DevOps 入门实战(一):从 CI/CD 概念到 Jenkins 自动构建部署
运维·云原生·云计算·jenkins·devops
SaaS_Product5 天前
OneDrive中的文件批量迁移到Zoho网盘
经验分享·云计算·saas·onedrive
Zhang2857326 天前
跨境业务选AWS区域避坑指南:美东、美西、新加坡、东京怎么选?
云计算·aws
DolitD7 天前
UE像素流与云渲染技术方案对比分析
3d·云原生·ue5·云计算·图形渲染