代码之家  ›  专栏  ›  技术社区  ›  Dylan

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

  •  1
  • Dylan  · 技术社区  · 7 年前

    我使用第三方软件的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响应,这是意料之中的。

    两个代码中的两个图像的文件路径都是正确的。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Andrew    7 年前

    当我将图像上载到服务器时,我已经构建了 FormData 以以下方式。

    let file = {
        name: 'myimage.jpg',
        uri: 'path/to/the/image/myimage.jpg',
        type: 'image/jpg'
     };
    
     let body = new FormData();
     body.append('upload', file);
    
        2
  •  0
  •   Marc Belmont    7 年前

    文档现在包括一个如何 use the API in Javascript .