使用Curl和PHP将文件发送到Anonfile

时间:2019-02-02 17:51:16

标签: php curl

我正在尝试在anonfile上使用curl和PHP发送文件,但是 我得到这个json:

  

{“状态”:false,“错误”:{“消息”:“无文件   选择。“,”类型“:” ERROR_FILE_NOT_PROVIDED“,”代码“:10}}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"https://anonfile.com/api/upload");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'test.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);
print_r($server_output);
curl_close ($ch);

换句话说,如何将此命令转换为PHP?

curl -F "file=@test.txt" https://anonfile.com/api/upload

我尝试了几个例子,但仍然没有头绪

$target_url = 'https://anonfile.com/api/upload';
$args['file'] = '@/test.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;

2 个答案:

答案 0 :(得分:0)

curl_setopt($ch, CURLOPT_POSTFIELDS,'test.txt');

无效,因为它实际上只是发送文字字符串test.txt

$args['file'] = '@/test.txt';

不起作用,因为在PHP 5.5中弃用了@前缀来上传文件,在PHP 5.6中默认禁用了前缀,并在PHP 7.0中将其完全删除了。在PHP 5.5及更高版本中,请使用CURLFilemultipart/form-data格式上传文件。

从PHP 5.5+开始(目前很古老),

curl -F "file=@test.txt" https://anonfile.com/api/upload

翻译为

$ch=curl_init();
curl_setopt_array($ch,array(
    CURLOPT_URL=>'https://anonfile.com/api/upload',
    CURLOPT_POST=>1,
    CURLOPT_POSTFIELDS=>array(
        'file'=>new CURLFile("test.txt")
    )
));
curl_exec($ch);
curl_close($ch);

答案 1 :(得分:0)

$request = curl_init('https://api.anonfiles.com/upload');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, 
CURLOPT_SAFE_UPLOAD, true); curl_setopt(
    $request,
    CURLOPT_POSTFIELDS,
    [
        'file' => new CURLFile(realpath('test.txt'), 'text/plain'),
    ] );
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);

echo curl_exec($request);

var_dump(curl_getinfo($request));

curl_close($request);