无法使用 API 将文件上传到文件夹网格

Posted

技术标签:

【中文标题】无法使用 API 将文件上传到文件夹网格【英文标题】:Unable to upload a file to foldergrid using API 【发布时间】:2013-05-30 14:10:54 【问题描述】:

尝试使用文件夹网格 api 上传文件。有2个步骤。

    调用配置文件以获取带有 guid 的位置。 使用 PUT 上传实际文件。

我能够进行第一次呼叫并获得https://files.foldergrid.com/upload/xxx 类型的位置。然后我尝试使用它作为我的位置上传文件并继续获取

< HTTP/1.1 100 Continue
* Empty reply from server
* Connection #0 to host files.foldergrid.com left intact
* Closing connection #0

来自服务器不确定我缺少什么? 这是我正在使用的代码:

调用提供 api 后,我得到一个存储在其中的 url $url = 'https://files.foldergrid.com/upload/xxx' 我有我要在文件中上传的文件的路径 $file = '文件的某个路径' 然后我调用了以下方法:

    public function putFile($file,$url) 

    $headers = array(

    'fg-eap: false',
    'fg-md5:'.md5_file($file),

        );

    $fh = fopen($file, "rb");

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);

    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);

    curl_setopt($curl, CURLOPT_NOBODY, true);
    curl_setopt($curl,CURLOPT_PUT,true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);


    curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_INFILE, $fh);
    curl_setopt($curl, CURLOPT_INFILESIZE, filesize($file));

    curl_setopt( $curl, CURLOPT_VERBOSE, true );                   

    $result = curl_exec($curl);

    fclose($fg);

    curl_close($curl);
    return $result;
    

【问题讨论】:

【参考方案1】:

您发布的代码看起来除了 Content-Type 标头之外的所有内容。尝试将您的标头数组设置为:

$headers = array(
  'fg-eap: false',
  'fg-md5:'.md5_file($file),
  'Content-Type: binary/octet-stream'
);

此外,为响应您的查询,我们在our API documentation here 下发布了更新的 php 客户端示例。

【讨论】:

这是我的错误之一。我的位置变量中有另一个错误,它最后有空格,这就是为什么我一直看到一个格式错误的 url,我应该看到一个 PUT 请求。

以上是关于无法使用 API 将文件上传到文件夹网格的主要内容,如果未能解决你的问题,请参考以下文章

无法使用保管箱 API 将文件(使用 ALAsset 库)上传到保管箱

无法使用 GraphQL 和 Apollo 将文件上传到 Strapi

Selenium 网格执行 - 如何使用 sendkeys 将多个文件一起(一次)上传到网页

将文件上传到 Azure Blob 存储时没有触发事件网格事件——为啥?

Dropbox.Api 无法上传大文件

使用 Angular2 将文件上传到 REST API