从服务器到服务器的http传输文件

qua*_*lle 9 html php file-upload

使用html表单,我们可以使用enctype="multipart/form-data",输入type="file"等将文件从客户端上传到服务器.

有没有办法让文件已经在服务器上并以相同的方式将其传输到另一台服务器?

谢谢你的提示.

// 哇!这是我见过的最快的问答页面!!

Pas*_*TIN 11

当浏览器将文件上载到服务器时,它会发送一个HTTP POST请求,其中包含文件的内容.

你必须复制它.


使用PHP,最简单(或至少,最常用)的解决方案可能适用curl.

如果您查看可以设置的选项列表curl_setopt,您将看到以下内容:( 引用):CURLOPT_POSTFIELDS

要在HTTP"POST"操作中发布的完整数据.
要发布文件,请在文件前加上@并使用完整路径.
这可以作为urlencoded字符串传递,如'para1 = val1¶2 = val2&...',或者作为一个数组,字段名称为键,字段数据为值.
如果value是数组,则Content-Type标头将设置为multipart/form-data.


没有经过测试,但我想这样的事情应该可以解决问题 - 或者至少可以
帮助你开始:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/your-destination-script.php");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'file' => '@/..../file.jpg',
         // you'll have to change the name, here, I suppose
         // some other fields ?
));
$result = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

基本上,你:

  • 正在使用卷曲
  • 必须设置目标网址
  • 表示您要curl_exec返回结果,而不是输出结果
  • 正在使用POST,而不是GET
  • 发布一些数据,包括文件 - 注意@文件路径之前.

  • 最后一个选项应该是"curl_setopt" (2认同)