0

我不太确定如何用这个词来表达,但我有一份名为 的工作uploadFile,它使用 CloudConvert 将上传的文件(例如 PDF)转换为 JPG。

单独使用,效果很好。我可以上传一个文件,它将保存到 S3,然后 CloudConvert 获取 S3 文件,将其转换并上传。完美的。

当一次多人使用它时,文件就会混淆。文件名是正确的(所以变量本身必须是正确的),但实际处理的图像是别人的。

$originalFileName = str_replace('.'.$this->extension, '', $this->actualFileName);
$tempName = $originalFileName.'_'.time().'.jpg';
$fileName = $originalFileName.'_'.time();

Storage::disk('s3')->put($folder.$fileName, $file, 'public');

$fileUrl = Storage::disk('s3')->url($fileName);

CloudConvert::file($fileUrl)
    ->withOptions([
        'quality' => 80,
        'resize' => '400x400',
    ])->to(CloudConvert::S3($tempName));

在上面,文件Storage->put()是正确的,$tempName$fileName. 不知何故,它正在转换的文件是错误的,所以输出 Jpeg 来自其他人的上传。

有谁知道我可以尝试什么?我什至不确定从哪里开始调试。

4

2 回答 2

0

呃,好吧,我终于解决了。CloudConvert 需要重新实例化。如果有人再次遇到此问题,请参见此处的线程。

于 2019-02-13T08:09:20.937 回答
0

简单交换time()

$mark = microtime().rand(10,100);
$tempName = $originalFileName.'_'.$mark.'.jpg';
$fileName = $originalFileName.'_'.$mark;
于 2019-02-13T05:51:43.677 回答