【问题标题】:Upload file from URL从 URL 上传文件
【发布时间】:2014-04-02 21:06:47
【问题描述】:

我一直在尝试弄清楚如何在不使用表单的情况下使用以下代码从 URL 上传文件。在一个表单中,我可以输入一个 URL 而不是计算机上的本地文件,然后它会上传它,所以我猜它可能吗?:

示例位置:http://www.bubblews.com/assets/images/news/521013543_1385596410.jpg

if ((isset($_FILES['upload']['name'])) && (substr_count($_FILES['upload']['type'],'image/'))) {

    $prefix = "market/".$market->guid;      
    $filehandler = new ElggFile();
    $filehandler->owner_guid = $market->owner_guid;
    $filehandler->setFilename($prefix . ".jpg");
    $filehandler->open("write");
    $filehandler->write(get_uploaded_file('upload'));
    $filehandler->close();

【问题讨论】:

  • 听起来像是你应该使用 curl 的东西。
  • 将远程文件下载到您的服务器(也称为 URL 上传)与本地文件上传非常不同。可以在此处找到使用 curl 的良好解决方案:stackoverflow.com/questions/6348602/…

标签: php image forms file upload


【解决方案1】:

在linux主机你可以试试

exec("wget ".$_POST['url']);

【讨论】:

  • 运行 exec 是一个非常糟糕的主意,尤其是对于不受信任的帖子数据。
  • 非常糟糕.. 互联网上的任何人都可以发布到该页面并强制您的服务器下载并执行托管在世界任何地方的恶意文件..
【解决方案2】:

试试这个例子:

Saving image from PHP URL

$ch = curl_init('http://example.com/image.php');
$fp = fopen('/my/folder/flower.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

或者这个

$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2021-12-03
    相关资源
    最近更新 更多