【发布时间】:2017-12-21 13:48:22
【问题描述】:
我想发布到 Synology Disksation 并使用 PHP 上传文件。 Synology 的 API 为我提供了一个我想用 PHP 调用的接口。请参阅下面的文档。
这是我的代码,我用它来发帖:
<?php
$params = array(
'path' => '/home/upload',
'create_parents' => 'true',
'overwrite' => 'true',
'api' => 'SYNO.FileStation.Upload',
'version' => 2,
'method' => 'upload'
'_sid' => [id of session after authenticate],
'file[]' => "@".path_to_file
);
$ch = curl_init();
$BODY = http_build_query($params);
curl_setopt($ch, CURLOPT_URL, 'http://ip_of_diskstation:5000/entry.cgi');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $BODY);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($result);
?>
此调用有效,但 diskstation 为我提供了以下 JSON。
{"error":{"code":401},"success":false}
根据文档,存在“文件操作未知错误”。此外,使用“file_get_contents(文件路径)”而不是“@”。path_to_file 会从磁盘站给我同样的错误。
如何将文件和参数发布到 Synology Diskstation?
【问题讨论】:
-
401状态码通常表示Unauthorized。你对_sid的价值有信心吗?在使用此 API 之前,您是否需要在 Diskstation 上启用某些功能? -
在调用“http://[ip_of_diskstation]:5000/webapi/auth.cgi ?api=SYNO.API.Auth&version=2&method=login&account=[用户名]&passwd=[pass]&session=DownloadStation&format=cookie"。我在上面的代码中用于上传调用的这个“sid”。在 Synology API 的文档中,401 的含义与 HTTP 中的含义不同。 global.download.synology.com/download/Document/DeveloperGuide/…
-
你有没有得到这个工作?
标签: php file curl upload synology