从python向api发送文件到api请求以响应本机javascript转换代码

时间:2019-01-31 17:38:50

标签: javascript python api file react-native

我使用了称为Plate识别器的第三方软件的api,可以看到here我尝试了他们的python示例代码,并且可以正常工作,但是当我使用javascript代码进行尝试时,他们的api响应值不同表示我的JavaScript代码不等同于他们提供给我的正在工作的python代码,问题是如何使我的代码与我创建的python代码完全相同的功能?

这是我运行的python代码,可以给我成功的响应,并提供预期的输出。

# pip install requests
import requests
from pprint import pprint

with open('./sampleCar3.jpg', 'rb') as fp:
    response = requests.post(
        'https://platerecognizer.com/api/plate-reader/',
        files=dict(upload=fp),
        headers={'Authorization': 'Token API_TOKEN'})
pprint(response.json())

这是我在javascript上尝试记录错误输出的代码

placeRecognizerPostRequest(imgSrc) {
        // imgSrc value = ./sampleCar3.jpg
        const body = new FormData();
        body.append("upload", imgSrc);

        fetch("https://platerecognizer.com/api/plate-reader/", {
            method: 'POST',
            headers: {
                "Authorization": "Token API_TOKEN",
                "Content-Type": "multipart/form-data"
            },
            body: body
        }).then((response) => {
            console.log(response);
        }).catch((err) => {
            console.log(err);
        });
    }

我想要他们的api的成功输出响应,它在我的python代码中是成功的,但是却给了我一个意料之外的失败json响应。

PS。两个代码中两个图像的文件路径均正确。

2 个答案:

答案 0 :(得分:1)

当我将图像上传到服务器时,我以以下方式构造了FormData

let file = {
    name: 'myimage.jpg',
    uri: 'path/to/the/image/myimage.jpg',
    type: 'image/jpg'
 };

 let body = new FormData();
 body.append('upload', file);

答案 1 :(得分:0)

文档现在包含有关如何use the API in Javascript的示例。