代码之家  ›  专栏  ›  技术社区  ›  H. Pauwelyn

使用Dropzone.JS将图像上载到Imgur

  •  2
  • H. Pauwelyn  · 技术社区  · 9 年前

    我制作了一个页面,网站的用户可以通过拖放上传图片。为此,我使用Dropzone.JS (转到 infosite Github ) 我会把文件上传到Imgur。

    问题是,我不知道如何用DropZone.JS实现这一点。这是我用来实现 Dropzone -类。

    <div class="dropzone">
        <div class="fallback">
            <input name="file" type="file" multiple />
        </div>
    </div>
    
    <script src="~/Scripts/DropZone.js" type="text/javascript"></script>    
    
    <script>
        var myDropzone = new Dropzone(".dropzone", { 
            url: "https://api.imgur.com/3/image", 
            Authorization: 'Client-ID MY_CLIENT_ID'
        });
    </script>
    

    这是我从Imgur得到的答复

    {
        "data": {
            "error": "An image ID is required for a GET request to /image",
            "request": "/3/image",
            "method": "GET"
        },
        "success": false,
        "status": 400
    }
    

    出现此错误:

    XMLHttpRequest 无法加载 https://api.imgur.com/3/image .请求标题字段 Cache-Control 不允许 Access-Control-Allow-Headers 飞行前响应。

    如果请求成功,我也会从Imgur获取上传图像的url。

    2 回复  |  直到 7 年前
        1
  •  4
  •   Wenceslao Negrete    9 年前

    如果imgur的启用CORS的服务未通过其访问控制允许头:响应头包含“缓存控制”,则CORS要求不满足,请求被浏览器拒绝。

    请尝试以下操作:

    var myDropzone = new Dropzone('.dropzone', {
        //...
        headers: {
            'Authorization': authorizationHeader,
            'Cache-Control': null,
            'X-Requested-With': null
        }
    });
    
        2
  •  0
  •   H. Pauwelyn    9 年前

    通过尝试文件Dropzone中的一些代码。js,我终于找到了!我添加了这行代码:

    formData.append('image', file);
    

    也感谢Wenceslao Negrete的回答。