这里是一段代码:
public function uploadPhoto(){
$filename = '../storage/temp/image.jpg';
file_put_contents($filename,file_get_contents('http://example.com/image.jpg'));
$photoService->uploadPhoto($filename);
echo("If file exists: ".file_exists($filename));
unlink($filename);
}
我正在尝试实现以下几个操作:
- 从URL获取照片并将其保存到我的服务器的临时文件夹中。这部分工作正常,图像文件已创建,并在运行
echo("If file exists: ".file_exists('../storage/temp/image.jpg'));
时显示出If file exists: 1
。 - 将该文件传递给另一个函数,用于将该文件上传到Amazon S3存储桶中。文件将被存储在我的S3存储桶中。
- 删除存储在临时文件夹中的照片。此部分不起作用!我得到一个错误消息:
unlink(../storage/temp/image.jpg): Resource temporarily unavailable
如果我使用rename($filename,'../storage/temp/renimage.jpg');
而不是unlink($filename);
,我会收到一个错误消息:
rename(../storage/temp/image.jpg,../storage/temp/renimage.jpg): The process cannot access the file because it is being used by another process. (code:32)
如果我删除函数调用$photoService->uploadPhoto($filename);
,一切都正常。
如果文件正在被其他进程使用,那么在进程完成并且文件不再被任何进程使用后,如何解除链接? 我不想使用计时器。
请帮忙!提前致谢。
$_SERVER['DOCUMENT_ROOT']
而不是../
。 - Martinimage.jpg
,这样可能会更好,因为不同的请求可能尝试在同一个文件上进行操作。 - JustOnUnderMillionsunlink
之后但在file_exists
之前,而且谁知道uploadPhoto
是做什么的。;-) 我只是粘贴了链接,这样原帖作者就可以阅读相关内容了。 - JustOnUnderMillionsuploadPhoto
的作用仅仅是创建 AWS 客户端并将照片上传到我的 s3 存储桶。@JustOnUnderMillions - Abhishek Reddy