NodeJS Axios错误:未找到获取地址信息

yb3bgrhw  于 2023-01-12  发布在  Node.js
关注(0)|答案(3)|浏览(254)

我是新手谁是学习玩API。我得到POST请求错误,而使用axios。
在我想交互的API文档中,他们给予了curl的例子。

curl -X POST https://ssuploader.streamsb.com/upload/01
 -d "api_key=948324jkl3h45h"
 -d "@path/filename.mp4"
 -H "Content-Type: application/x-www-form-urlencoded"

我正在尝试使用axios发出POST请求。我写了这样的简单脚本。

const axiosConfig = {
    headers : { 
        "Content-Type": "application/x-www-form-urlencoded"
    }
}
const file = __dirname + "/video/Video.mp4";
const fileData = fs.readFileSync(file);
const data = `api_key=${API_KEY}&${fileData}`;

axios.post('https://ssuploader.streamsb.com/upload/01', data, axiosConfig).then((result) => {
  console.log(result.data);  
}).catch((err) => {
    console.log("Getting Error : ", err);
});

我收到此错误。

Getting Error :  AxiosError: getaddrinfo ENOTFOUND ssuploader.streamsb.com

我是一个真正的新手,所以我认为我的一些结构是错误的,当转换curl到axios。我真的不知道该怎么做。我的意思是我不能弄清楚我的false。有人能帮助我吗?非常感谢。

部分变更

我在答案的帮助下找出了一些错误。我忘记了先获取服务器。所以我更新了我的代码。

const file = __dirname + "/video/Video.mp4";
const fileData = fs.createReadStream(file);
const formData = new FormData();
formData.append('file', fileData);
formData.append('api_key', API_KEY);
console.log(formData)

axios.get(`https://api.streamsb.com/api/upload/server?key=${API_KEY}`).then(result => {
    const url = result.data.result;
    axios.post(url, formData, axiosConfig)
  .then((result) => {
    console.log(result.data);
  }).catch((err) => {
    console.log("Getting Error : ", err);
  });

})

但我得到了新的错误。

AxiosError: Request failed with status code 400
bvpmtnay

bvpmtnay1#

正如我从文档中了解到的,这是2个步骤的过程。首先你需要获得上传URL(他们称之为服务器),然后用它来上传你的文件。
因此,请使用以下代码:

axios.get(`https://api.streamsb.com/api/upload/server?key=${API_KEY}`).then((result) => {
  const url = result.data.result;
  // your post request to this url here
}).catch((err) => {
    console.log("Getting Error : ", err);
});
owfi6suc

owfi6suc2#

您正在将fileData作为data对象中的字符串发送
1.使用'Content-Type': 'multipart/form-data'而不是"Content-Type": "application/x-www-form-urlencoded"
1.代码将是这样的

import FormData from 'form-data';

const axiosConfig = {
  headers: {
    'Content-Type': 'multipart/form-data'
  }
}

const file = __dirname + "/video/Video.mp4";
const fileData = fs.createReadStream(file);

const formData = new FormData();
formData.append('file', fileData);
formData.append('api_key', API_KEY);

axios.post('https://ssuploader.streamsb.com/upload/01', formData, axiosConfig)
  .then((result) => {
    console.log(result.data);
  }).catch((err) => {
    console.log("Getting Error : ", err);
  });

如果你有任何疑问,你可以问

nwlqm0z1

nwlqm0z13#

是他们,不是你。
ssuploader.streamsb.com没有DNS记录(您可以将其输入到https://mxtoolbox.com/DNSLookup.aspx中进行检查),这意味着当您尝试连接到它时,它将一无所获。
除非你做一些挖掘,并找到一个域,从他们有DNS记录,有没有什么你可以做的。

相关问题