首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ImgBB api与Axios进行反应?

如何使用ImgBB api与Axios进行反应?
EN

Stack Overflow用户
提问于 2020-07-04 19:05:08
回答 3查看 3.7K关注 0票数 0

我正在尝试使用Imgbb来上传图片,但到目前为止我还没有做到。API文档将其显示为一个示例调用:

代码语言:javascript
复制
curl --location --request POST "https://api.imgbb.com/1/upload?expiration=60&key=YOUR_CLIENT_API_KEY" --form "image=R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"

我的轴心:

代码语言:javascript
复制
vendorImageUpload(img) {
    var responseArr = []
    var formData = new FormData()
    formData.append("image", img)
    formData.append("key", "api-key")

    console.log(axios({
      method: "post",
      url: IMG_URL,
      data: formData,
      headers: {
        "content-type": "multipart/form-data",
      }
    }))
  }

但是我得到了一个400错误。但是,当我用postman测试它时,当头中唯一的东西是content-typecontent-lengthhost时,它就能工作。

我想使用formData.getHeaders(),因为它显然在this post中起作用,但它只在节点上工作,没有反应。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-31 10:27:20

我认为问题来自于格式数据的设置。

代码语言:javascript
复制
uploadImage(img) {
    let body = new FormData()
    body.set('key', 'an_api_key')
    body.append('image', img)

    return axios({
      method: 'post',
      url: 'https://api.imgbb.com/1/upload',
      data: body
    })
  }

这很好,并以我想要的方式返回数据。对Sajal来说,谢谢你回答我的问题,其实我已经想出来了。但是,我不想为这么简单的事情添加另一个NPM库。

答复如下:

代码语言:javascript
复制
{
  id: '5jKj6XV',
  url_viewer: 'https://ibb.co/5jKj6XV',
  url: 'https://i.ibb.co/94Z4Nmj/test.jpg',
  display_url: 'https://i.ibb.co/94Z4Nmj/test.jpg',
  title: 'test',
  time: '1574431312',
  image: {
    filename: 'test.jpg',
    name: 'test',
    mime: 'image/jpeg',
    extension: 'jpg',
    url: 'https://i.ibb.co/94Z4Nmj/test.jpg',
    size: 91264
  },
  thumb: {
    filename: 'test.jpg',
    name: 'test',
    mime: 'image/jpeg',
    extension: 'jpg',
    url: 'https://i.ibb.co/5jKj6XV/test.jpg',
    size: '12875'
  },
  delete_url: 'https://ibb.co/5jKj6XV/ffd8ef0b1c803f02443553535cf4a5f4'
}

然后,在调用函数之后,可以使用.then存储数据。

代码语言:javascript
复制
...


uploadImage(e.target.files[0])
  .then(resp => {
    console.log(resp.data.data) // I'm aware it's data.data, that is how it returns stuff
  })
票数 2
EN

Stack Overflow用户

发布于 2020-08-31 08:43:10

有一个npm库imgbb-uploader

代码语言:javascript
复制
var imgbbUploader = require('imgbb-uploader');

imgbbUploader("your-imgbb-api-key-string", "home/absolute/path/to/your/image/image.png")
  .then(response => console.log(response))
  .catch(error => console.error(1))

响应将是这样的.

代码语言:javascript
复制
{
  id: '5jKj6XV',
  url_viewer: 'https://ibb.co/5jKj6XV',
  url: 'https://i.ibb.co/94Z4Nmj/test.jpg',
  display_url: 'https://i.ibb.co/94Z4Nmj/test.jpg',
  title: 'test',
  time: '1574431312',
  image: {
    filename: 'test.jpg',
    name: 'test',
    mime: 'image/jpeg',
    extension: 'jpg',
    url: 'https://i.ibb.co/94Z4Nmj/test.jpg',
    size: 91264
  },
  thumb: {
    filename: 'test.jpg',
    name: 'test',
    mime: 'image/jpeg',
    extension: 'jpg',
    url: 'https://i.ibb.co/5jKj6XV/test.jpg',
    size: '12875'
  },
  delete_url: 'https://ibb.co/5jKj6XV/ffd8ef0b1c803f02443553535cf4a5f4'
}
票数 2
EN

Stack Overflow用户

发布于 2021-04-12 13:15:07

要将图像发布到imgbb,需要用base64字符串对图像进行编码,因此可以使用FileReader()。见下文:

代码语言:javascript
复制
const handleSubmit = () => {
    const rf = new FileReader();
    rf.readAsDataURL(file); //file is from a useState() hook
    rf.onloadend = function (event) {
        const body = new FormData();
        body.append("image", event.target.result.split(",").pop()); //To delete 'data:image/png;base64,' otherwise imgbb won't process it.
        body.append("name", fileName);
        fetch(imgUrl, {
            method: "POST",
            body: body
        })
        .then(res => {
            console.log(res.json().then(console.log));
        })
        .catch(err => console.log(err));
    }
})

在我的例子中,我从<input>获得了这个文件,您也可以在本地打开一个文件。如果您想使用imgbb的响应,请不要忘记使用res.json().then()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62733308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档