首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku文件上传成功,但下载时出错

Heroku文件上传成功,但下载时出错
EN

Stack Overflow用户
提问于 2022-04-15 09:18:52
回答 1查看 93关注 0票数 0

嗨,我正在heroku上构建一个laravel-livewire应用程序,这个应用程序需要文件上传,我使用的是livewire的FileUpload,它在本地很好地工作,但是当我在heroku上尝试它时,它说上传成功,但是当我下载该文件时它会收到"No file“消息。我不知道错误在哪里。

这是我的源代码:_ In控制器:

代码语言:javascript
复制
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;
    }

-视野中

代码语言:javascript
复制
<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>
    ```
EN

回答 1

Stack Overflow用户

发布于 2022-04-15 13:34:15

眼前的问题可能只是相对路径和绝对路径。

但是,即使你解决了这个问题,你也会发现你的上传经常消失,而且是无法预料的。这要归功于Heroku的临时文件系统

要长期存储上传内容,您需要使用第三方服务,如Amazon、S3或。看上去像Livewire直接支持这一点。

前面的示例演示了最基本的存储场景:将临时上传的文件移至应用程序默认文件系统磁盘上的“照片”目录。 但是,您可能希望自定义存储文件的文件名,甚至指定一个特定的存储“磁盘”来将文件存储在上面(例如,在S3桶中)。

它还提供了以下示例:

代码语言:javascript
复制
// Store in the "photos" directory in a configured "s3" bucket.
$this->photo->store('photos', 's3');

并链接到相关的Laravel文件,表示Livewire使用相同的API。只需确保配置S3桶

您也可以使用完全绕过您的服务器,将上传从用户的浏览器直接上传到您的S3桶。这对于大型上传特别有用。

在构建下载URL时,请确保使用正确的磁盘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71882219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档