坚持这一个。我在下面有这个函数,它只需要$ImageSrc
来自任何地方的外部图像,例如imgur,然后将其保存在本地(这不是刮刀,我允许人们将图像附加到他们的配置文件中)
public function UploadScreenshot($ImageSrc, $Title, $Description = false) {
$RandomName = substr(md5($Title . time()), 0, 20);
$UploadDir = "/home/vanrust/public_html/Screenshots/";
$file = pathinfo($ImageSrc);
$ext = $file["extension"];
if (!in_array($ext, array('jpg','png','bmp','jpeg'))) return array("error" => "Invalid File Type");
$RandomName = "{$RandomName}.{$ext}";
$image = file_get_contents($ImageSrc);
file_put_contents($UploadDir . $RandomName, $image);
}
无论什么都无法识别,文件的结果。
图片:
UploadScreenshot()检索后:
答案 0 :(得分:0)
尝试使用rename()将原始文件移动到新位置并重命名。
$file = pathinfo($ImageSrc);
$ext = $file["extension"];
if (!in_array($ext, array('jpg','png','bmp','jpeg'))) return array("error" => "Invalid File Type");
$RandomName = "{$RandomName}.{$ext}";
rename($UploadDir . $RandomName, $ImageSrc);
}
或者,如果您的$ ImageSrc包含有效的上传文件(意味着它是通过PHP的HTTP POST上传机制上传的话),您可以使用move_uploaded_file()。
需要谨慎使用file_put_contents()。文件开头或结尾的单个偏移(二进制代码)将显着改变图像。它需要在最后验证以比较两个文件字节。