当我使用file_get_contents()函数时等效$ _FILES [" imageToUpload"] [" tmp_name"]

时间:2017-12-14 11:58:29

标签: php image file

我有这样的功能:

fitImageSizeAndSave($_FILES["imageToUpload"]["tmp_name"], $target_file) { ... }

该功能运作良好。第一个参数是$_FILES["imageToUpload"]["tmp_name"]。好吧,当用户从他的本地计算机上传图像时,它会很好。但有时候他会输入一个外部链接,我会得到这样的图像:

$image = file_get_contents($_POST['external_link']);

如何让$image$_FILES["imageToUpload"]["tmp_name"]一样传递给函数?

2 个答案:

答案 0 :(得分:0)

  

使用file_put_contents(),然后引用您刚将数据放入的临时文件

  

@Martin听起来很棒,请你补充一下答案吗? -

$_FILES["imageToUpload"]["tmp_name"]只是服务器上文件位置的字符串,它本身不是resuorce。

$filePathLocation = $_SERVER['DOCUMENT_ROOT']."/some-temporary/file/storage";
$imageData = file_get_contents($_POST['external_link']);

if($imageData){
     file_put_contents($imageData, $filepathLocation);
}
else {
     $filepathLocation = $_FILES["imageToUpload"]["tmp_name"];
}

fitImageSizeAndSave($filepathLocation, $target_file) { ... }

以上,一步一步:

  • 设置临时存储位置;可能基于microtime()或其他唯一的东西(数据库ID,如果相关)来限制不同的进程覆盖相同的文件路径。

  • 获取$_POST文件网址的内容。保存为字符串变量。

  • 检查if变量是否已加载; else使用上传的临时文件位置 这仅用于说明 - 您应该有一个更完整的流程来检查要使用的数据以及所述数据的有效性在脚本中设置。

  • 将此变量发送到您的自定义函数,已知其填充了上述一种或另一种可能性。

答案 1 :(得分:-1)

以下是从url获取图像并保存到您的位置计算机或自己的服务器

的PHP脚本
$imageurl ='http://i.ndtvimg.com/i/2015-08/mahesh-babu_630x450_81440064359.jpg';

$content = file_get_contents($imageurl);

if(file_put_contents('imagefolder/randomImageName.jpg', $content)){
     echo "File uploaded through URL";
}else{
    echo "File not uploaded...";
}