【发布时间】:2018-01-24 04:06:35
【问题描述】:
我正在尝试使用 Laravel Storage Facade 将文件上传到临时位置,但它说该文件不存在。我正在尝试将文件上传到 ./storage/app/roofing/projects/{id}/ 然后是文件。不知道我到底哪里出错了。
foreach ($files as $file) {
$path = Storage::putFile('contract-assets', new File('../storage/app/roofing/projects/'. $project->id.'/'. $file));
}
我必须在将文件存储在本地服务器上后将文件发送到 AWS S3,因为尝试直接上传到 S3 需要时间,而在我的情况下,由于需要存储的文件数量而需要时间。到目前为止,我得到的一切在我的 dd() 中都是真实的。这可能是什么原因?
if (!empty($request->contract_asset)) {
$files = $request->file('contract_asset');
foreach ($files as $file) {
Storage::putFile(Carbon::now()->toDateString().'/roofing/projects/'. $project->id.'/contract-assets', $file);
}
}
foreach (Storage::files(Carbon::now()->toDateString().'/roofing/projects/'.$project->id.'/contract-assets') as $file) {
dispatch(new ProcessRoofingProjectContractAssets($file, $project));
}
我的工作文件。
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$path = Storage::disk('s3')->put('contract-assets', $this->asset, 'public');
dd($path);
$this->project->addContractAsset($path);
}
更新:
这些是我当前的更改,我收到以下错误消息。 Failed because Unable to JSON encode payload. Error code: 5
foreach ($files as $file) {
$returnedStoredFile = Storage::putFile('/roofing/projects/' . $project->id . '/contract-assets/'.Carbon::now()->toDateString(), $file);
dispatch(new ProcessRoofingProjectContractAssets(Storage::get($returnedStoredFile), $project));
}
【问题讨论】:
-
Storage::disk('local')->put('file.txt', 'Contents'); -
这些是大文件,所以应该使用 putFile。
-
...但是您使用的磁盘是否正确?
-
什么是
$file?细绳?对象? -
合约资产只是项目内部的目录。我对此感到很困惑。