嗨,我正在heroku上构建一个laravel-livewire应用程序,这个应用程序需要文件上传,我使用的是livewire的FileUpload,它在本地很好地工作,但是当我在heroku上尝试它时,它说上传成功,但是当我下载该文件时它会收到"No file“消息。我不知道错误在哪里。
这是我的源代码:_ In控制器:
public function updatedFile()
{
// $this->validate();
$fileUpload = new File();
$fileUpload->url = $this->file->storeAs('public/files/' . auth()->id(), $this->file->getFilename());
$fileUpload->size_file = $this->getFileSize($this->file);
$fileUpload->file_name = $this->file->getClientOriginalName();
$fileUpload->model_name = $this->model_name;
$fileUpload->model_id = $this->model_id;
$fileUpload->admin_id = auth()->check() ? auth()->id() : null;
$fileUpload->save();
if ($this->model_id == null)
$this->list[] = $fileUpload->id;
}-视野中
<a href="{{ $canDownload ? asset('storage/' . substr($val['url'], 7, strlen($val['url']) - 7)) : '#' }}" download>
<span class="d-block mb-0" style="word-break: break-all;">{{ $val['file_name'] }}</span>
<small class="kb">{{ $val['size_file'] }}</small>
</a>
```发布于 2022-04-15 13:34:15
眼前的问题可能只是相对路径和绝对路径。
但是,即使你解决了这个问题,你也会发现你的上传经常消失,而且是无法预料的。这要归功于Heroku的临时文件系统。
要长期存储上传内容,您需要使用第三方服务,如Amazon、S3或。看上去像Livewire直接支持这一点。
前面的示例演示了最基本的存储场景:将临时上传的文件移至应用程序默认文件系统磁盘上的“照片”目录。 但是,您可能希望自定义存储文件的文件名,甚至指定一个特定的存储“磁盘”来将文件存储在上面(例如,在S3桶中)。
它还提供了以下示例:
// Store in the "photos" directory in a configured "s3" bucket.
$this->photo->store('photos', 's3');并链接到相关的Laravel文件,表示Livewire使用相同的API。只需确保配置S3桶。
您也可以使用完全绕过您的服务器,将上传从用户的浏览器直接上传到您的S3桶。这对于大型上传特别有用。
在构建下载URL时,请确保使用正确的磁盘。
https://stackoverflow.com/questions/71882219
复制相似问题