Vue+Element-UI上传图片到七牛云踩过的坑——返回 404,报错:Document not found

2023-05-16

文章目录

      • 前端上传图片到七牛云的流程
      • 七牛云地址
          • 1、常见问题
          • 2、分清区别:配置区域和访问域名
      • 代码示例

不是进来找报错原因,看怎么上传图片的,先看上传流程分清区别:配置区域和访问域名找到域名,再看代码

前端上传图片到七牛云的流程

  1. 前端调用后端接口获取uploadToken
  2. 返回给前端需要的参数
  3. 前端通过Vue+Element-UI上传,只要封装好上传的文件对象和文件名的一些属性成dataObj,然后指定上传路径即可

七牛云地址

说到七牛云地址,真的是一把鼻涕一把泪(;´༎ຶД༎ຶ)

1、常见问题

各位要 看返回的上传失败常见状态码,找到原因解决是否是配置的问题
七牛云上传失败常见状态码
上传失败常见状态码
接下来就是前端最坑的问题

2、分清区别:配置区域和访问域名

设置没问题了,请求到七牛云一直返回 404,报错:Document not found
我尝试在七牛云打开空间访问日志,到这一步是可以访问的空间的。
在这里插入图片描述在这里插入图片描述
搞了N个小时,一直以为是设置或者代码有问题,后来终于想起七牛云创建的空间是有个区域的;

在后端上传图片,是会配置区域服务器的,然后再直接使用该空间的外链域名地址访问七牛云

在这里插入图片描述

而在前端,没有配置区域服务器,使用该空间的外链域名地址访问七牛云,自然就一直返回404

终于找到原因了 (;´༎ຶД༎ຶ)

在前端上传图片,每个七牛云存储区域都对应着相应的服务器端\客户端上传域名
去下面官网地址,找到你需要的域名,放到表单的action
七牛云官方提供的存储区域
在这里插入图片描述
没了,就这样没了 ( ̄_ ̄|||)

代码示例

后端具体代码:

@RestController
@RequestMapping("/qiniu")
public class QiNiuController {
	//这里我是在properties文件取值,根据情况修改
    @Value("${qiniu.accessKey}")
    private String accessKey;
    @Value("${qiniu.secretKey}")
    private String secretKey;
    @Value("${qiniu.bucket}")
    private String bucket;
    @Value("${qiniu.path}")
    private String path;
    @Value("${qiniu.host}")
    private String host;

    @GetMapping("/policy")
    public CommonResult policy(){
        System.out.println("accessKey = " + accessKey);
        //当天日期作为图片存放的文件名
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String dir = sdf.format(new Date());
        //生成密钥和token
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
		
        Map<String, String> respMap = new LinkedHashMap<String, String>();
        //获取的token
        respMap.put("upToken", upToken);
        //自定义的文件目录
        respMap.put("dir", dir);
        //七牛云空间外链域名地址,如 http://xxxxxx.clouddn.com
        respMap.put("path", path);
        //前端上传七牛云域名地址
        respMap.put("host", host);
		//我这是通用返回类封装,根据情况修改
        return CommonResult.success(respMap);
    }

el-upload组件:

<el-upload
  action="dataObj.host"
  :data="dataObj"
  list-type="picture"
  :multiple="false" :show-file-list="showFileList"
  :file-list="fileList"
  :before-upload="beforeUpload"
  :on-remove="handleRemove"
  :on-success="handleUploadSuccess"
  :on-preview="handlePreview">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过10MB</div>
</el-upload>
<!--显示图片-->
<el-dialog :visible.sync="dialogVisible">
  <img width="100%" :src="fileList[0].url" alt="">
</el-dialog>

后端具体代码:

<script>
	//参数
	dataObj: {
    	key: '',
     	path: '',
     	dir: '',
     	host: '',
     	token:'',
   },
</script>
<script>
methods: {
  emitInput(val) {
    this.$emit('input', val)
  },
  handleRemove(file, fileList) {
    this.emitInput('');
  },
  handlePreview(file) {
    this.dialogVisible = true;
  },
  beforeUpload(file) {
    console.log("上传之前文件信息;",file)
    let _self = this;
    return new Promise((resolve, reject) => {
      policy().then(response => {
       //这里用日期和随机数进行重命名,根据情况修改
         this.dataObj.key = response.data.dir +"/" + this.dateFormat()+"-" + Number.parseInt(Math.random() * 1000, 10) + file.name;
         this.dataObj.dir = response.data.dir;
         this.dataObj.host = response.data.host;
         this.dataObj.token = response.data.upToken;
         this.dataObj.path = response.data.path;
        resolve(true)
      }).catch(err => {
        reject(false)
      })
    })
  },
  handleUploadSuccess(res, file) {
    console.log("上传成功...")
    this.showFileList = true;
    this.fileList.pop();
    //访问图片,要用外链域名的地址path,不是上传区域服务器的域名host
    let url = this.dataObj.path + '/' + this.dataObj.key;
    this.fileList.push({name: file.name, url: url});
    this.emitInput(this.fileList[0].url);
  }
}
</script>

提醒:Element-UI是默认自动上传的,若不需要,用http-request属性来重写上传方式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue+Element-UI上传图片到七牛云踩过的坑——返回 404,报错:Document not found 的相关文章

  • MongoDB C# - 获取不存在的元素的 BsonDocument

    所以我有一个 BsonDocument b 假设它有 FirstName LastName Age 您可以通过 b FirstName 等访问它 如果我尝试执行 b asdfasdf 当然不存在 它不会返回 null 而是会导致应用程序出错
  • 如何将RapidJSON文档序列化为字符串?

    如何将RapidJSON文档序列化为字符串 在所有示例中 序列化文本通过以下方式重定向到标准输出 FileStream 但我需要将其重定向到字符串变量 In the 项目的第一页 http rapidjson org 代码已经展示了如何将文
  • vue的组件

    在Vue中 组件是可复用的代码块 用于构建用户界面 Vue的组件系统允许您将界面拆分为独立的 可重复使用的部件 提供了更好的代码组织和复用性 以下是在Vue中创建组件的基本步骤 创建一个组件实例 可以使用Vue extend 方法创建一个V
  • 黑豹程序员-字符串中查找出重复的字符串

    Collections frequency codeList element 字符串element 在codeList集合中重复的次数 List
  • Lucene - 检索文档中多值字段的所有值

    我在 Lucene 中添加了一个多值字段 如下所示 String categoriesForItem getCategories returns category1 category2 cat3 from a DB call String
  • java中同一数组的元素比较

    我正在尝试比较同一数组的元素 这意味着我想将 0 元素与其他所有元素进行比较 将 1 元素与其他所有元素进行比较 依此类推 问题是它没有按预期工作 我所做的是我有两个从 0 到 array length 1 的 for 循环 然后我有一个
  • width() 和 height() 适用于没有 jQuery 的现代浏览器

    我正在尝试为弹性 div 实现一个简单的折叠 展开效果 即当元素的实际尺寸未通过 CSS 设置时 因此无法简单确定 所以我需要 jQuery 的 width 和 height 的等效项来表示任意元素 这些方法应该返回可分配给 style w
  • SimpleXML 解析元素列表异常

    您好 我在解析此 xml 时遇到问题
  • 两个自定义(角度)元素之间的通信

    两个自定义 角度 元素之间的通信 假设有两个自定义元素 login button
  • 在 iOS 应用程序的文档文件夹中创建一个文件夹

    我只想在 iPhone 应用程序的文档文件夹中创建新文件夹 有人知道该怎么做吗 感谢你的帮助 我通过以下方式做到这一点 NSError error NSArray paths NSSearchPathForDirectoriesInDoma
  • 如何检查可见 DOM 中是否存在元素?

    如何在不使用getElementById method 我已经设置了一个现场演示 http jsbin com apawi5 3以供参考 我还将在这里打印代码
  • SPFileVersionCollection - 为什么版本按混合顺序排序?

    SPFileVersionCollection 和 SPListItemVersionCollection 版本控制对我来说似乎不一致 不一致对我来说不是问题 但排序顺序是问题 SPListItemVersionCollection 我可以
  • 如何通过 git 共享 odt/doc 文档

    我的想法是我想通过 git 共享和跟踪文档 我考虑过使用可以用任何文本编辑器 不是二进制 编辑的文本文档 功能上看 起来像 docx odt 的 markdown 文档 哪里可以找到这样的东西 有更好的解决方案吗 LaTeX 非常适合将其与
  • 如何使用 wix 将多个元素添加到 XML 配置文件中?

    我正在尝试使用 Wix 编辑 XML 文件 我正在使用与 Wix 3 7 捆绑在一起的 WixUtilExtension xml 文件是在 Visual Studio 2010 中为 C 应用程序创建的设置文件 在此文件中 我使用一个用于在
  • Lua:“拖动”数组中的元素序列

    我正在尝试创建一个函数 将连续数量的元素 拖动 到数组中的新位置 并限制为数组的当前大小 其他项目应该围绕 拖动 的项目晃动 例如 如果我的数组有 7 个元素 并且我想拖动中间的三个 1 2 3 4 5 6 7 lt keys a b C
  • 两个列表中的公共元素

    我有两个ArrayList每个对象都有三个整数 我想找到一种方法来返回两个列表的共同元素 有人知道我该如何实现这一目标吗 Use Collection retainAll https docs oracle com en java java
  • 使用 querySelector 通过 InnerHTML 选择元素

    有没有办法通过innerHTML选择一个元素而不使用循环 可以使用类似的东西来完成吗 document querySelector div innerHTML Sometext or document querySelector div t
  • 使所有打开的文档选项卡可见

    我想查看我在 Visual Studio 中打开的所有文件或文档 我不希望它们自动隐藏或溢出时隐藏 我怎样才能实现它 执行此操作的内置选项之一 使用固定选项卡 http dailydotnettips com 2016 01 21 pers
  • Cocoa 基于文档的应用程序中的 MVC

    我目前正在对我的应用程序进行重构和重组 我意识到模型和视图及其控制器之间的一些分离已经减少 我希望进行一些清理 我的应用程序中使用了几个关键类 NSPersistentDocument NSWindowController 和模型类 NSP
  • 用于(联合国)结构化文本文档的词法分析器/解析器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有很多脚本解析器和词法分析器 即结构化计算机语言 但我正在寻找一个可以将 几乎 非结构化文本文档分成更

随机推荐

  • Kali Linux-2021.4a下载安装全过程

    一 镜像下载 xff1b 下载镜像地址通过阿里云开源镜像站进行下载 xff1b https mirrors aliyun com kali images 二 系统安装 xff1b 说明 xff1a 本次安装流程通过虚拟机进行 1 虚拟机配置
  • RH8的ansible安装与配置

    Ansible安装与配置 自定义环境 角色主机名ip地址组名控制主机server example com192 168 157 100server受控主机1node1 example com192 168 157 134node1受控主机2
  • UOS开发者调试签名

    开发者调试签名 2022 01 18 20 03 03 一 证书生成 xff08 1 xff09 打开统信应用商店 xff0c 搜索 证书工具 xff0c 单击安装证书工具 xff08 2 xff09 使用cert tool工具生成证书 执
  • JAVA 分解质因数

    7 3 分解质因数 求出区间 a b 中所有整数的质因数分解 输入格式 输入两个整数a xff0c b 数据规模和约定 2 lt 61 a lt 61 b lt 61 10000 输出格式 每行输出一个数的分解 xff0c 形如k 61 a
  • 使用customRef自定义ref,解决setup中处理异步问题。

    setup中不允许使用async await使用customRef可以让请求到的数据自动获取响应式状态详见下方demo lt template gt lt div gt num lt div gt lt button 64 click 61
  • apache2.4 中文乱码问题

    PHP ini里面的default charset 61 34 UTF 8 34 lt meta http equiv 61 34 content type 34 content 61 34 text html charset 61 UTF
  • VScode自定义配置代码片段详细教程(附带转码链接)

    目录 前言 1 定义自己常用的代码片段 2 通过转码链接进转译 3 Vscode中设置 3 1找到配置代码片段进行设置 3 2点击全局配置进入粘贴转译过的代码 4 检验自定义代码段是否成功 小结 xff1a 前言 众所周知在VScode的h
  • 注意力机制总结

    文章目录 1 通道注意力1 1 SENet xff08 谁用谁知道 xff0c 用了都说好 xff09 2 通道 amp 空间2 1 CBAM2 2 scSE2 3 Coordinate Attention 3 self attention
  • 轻量级网络总结

    文章目录 1 SqueezeNet2 ShuffleNet2 1 v12 2 v2 3 MobileNet3 1 v13 2 v23 3 v3 4 GhostNet4 1 v14 2 v2 1 SqueezeNet SqueezeNet A
  • 【低光增强】Zero-DCE

    文章目录 一 前言二 算法理解2 1 低光增强曲线2 2 整体框架2 3 网络结构2 4 损失函数2 4 1 空间一致性2 4 2 曝光控制2 4 3 色彩恒常2 4 4 光照平滑 2 5 Zero DCE 43 43 三 效果测试 一 前
  • 【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

    文章目录 0 前言1 理解1 1 整体框架1 2 网络结构1 3 细节 2 亮点3 总结 0 前言 LTMNet这篇文章借鉴了CLAHE算法 xff0c 所有步骤与CLAHE一致 xff0c 不同之处在于LTMNet中局部映射曲线是通过CN
  • 【数字图像处理】边缘检测

    文章目录 0 前言1 Sobel算子2 Canny算子3 深度学习算法3 1 Holistically Nested Edge Detection xff08 HED xff09 3 2 Richer Convolutional Featu
  • 语义分割总结

    文章目录 0 前言1 数据集2 经典网络2 1 FCN2 2 U Net2 3 DeepLab2 4 PSPNet2 5 SegNet2 6 CCNet2 7 SegFormer 3 损失函数4 评价指标5 最新进展 xff08 2023
  • 使用matlab绘制世界地图并根据经纬度绘制点位(附m_map的下载与安装说明)

    文章目录 1 worldmap amp geoshow2 m map工具箱3 根据经纬度在世界地图上绘制点位 使用matlab绘制世界地图有两种方法 xff08 自己使用过的 xff0c 可能有别的我不了解的方法 xff09 xff1a 第
  • C 语言使用宏自定义可打印的枚举(enum) 类型

    1 前言 xff1a 说点废话 xff0c 时间紧的请直接跳过 xff0c 看后面的实现 尽管本人很反感 C 语言中的宏定义 xff0c 特别是滥用宏定义经常会让问题变的扑朔迷离 xff0c 但是不得不承认 xff0c 在某些时候 xff0
  • Matlab GUI设计之坐标转换(附Matlab GUI设计学习手册完整版pdf)

    文章目录 如何开始 xff1f 1 界面布局2 编写回调函数 相信看这篇文章的你们大部分没有用Matlab做过界面设计 xff0c 其实不只是你们 xff0c 我也是第一次 xff08 手动滑稽 xff09 xff0c 在此将我的经验同大家
  • 【Linux】线程互斥

    目录 1 进程线程间的互斥相关背景概念 2 互斥量mutex 2 1 基本概念 2 2 售票系统举例 2 3 解释 3 互斥量的接口 3 1 初始化互斥量 3 1 1 静态分配 3 1 2 动态分配 xff08 pthread mutex
  • C语言经典算法(八)——递归实现斐波那契数列的两种方法

    后继续整理算法并写出自己的理解和备注 C 43 43 实现的 xff1a 递归实现斐波那契数列 1 递归实现斐波那契数列Fib n lt 1 gt 题目描述 输入n值 xff0c 求解第n项的斐波那契数列值 lt 2 gt 方法一 概念法
  • 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况 xff1a 从终端软件登录远程的Linux主机 xff0c 将一堆很大的文件压缩为一个 tar gz文件 xff0c 连续压缩了半个小时还没有完成 xff0c 这时 xff0c 突然你断网了 xff0c 你登录不上远
  • Vue+Element-UI上传图片到七牛云踩过的坑——返回 404,报错:Document not found

    文章目录 前端上传图片到七牛云的流程七牛云地址1 常见问题2 分清区别 xff1a 配置区域和访问域名 代码示例 不是进来找报错原因 xff0c 看怎么上传图片的 xff0c 先看上传流程和分清区别 xff1a 配置区域和访问域名找到域名