【问题标题】:Laravel Storage copy not working, how to copy a file using storage diskLaravel 存储复制不起作用,如何使用存储磁盘复制文件
【发布时间】:2018-09-27 18:00:20
【问题描述】:

我的以下命令运行良好

copy($file_date['file_name_tmp_target'], $file_date['file_name_target']);

但是当我这样做时

\Storage::copy($file_date['file_name_tmp_target'], $file_date['file_name_target']);

\Storage::move($file_date['file_name_tmp_target'], $file_date['file_name_target']);

它给了我一个错误

(1/1) FileNotFoundException 在路径中找不到文件: 库/WebServer/Documents/project_name/public/report_tmp.csv

有什么想法吗?如何只使用存储磁盘复制文件?

【问题讨论】:

  • 我不知道为什么我的这个问题被否决了?

标签: php laravel laravel-5.4 laravel-filesystem laravel-storage


【解决方案1】:

您应该确保以有效的方式设置您的磁盘。存储使用config/filesystems.php,默认使用local磁盘,配置如下:

'local' => [
    'driver' => 'local',
    'root' => storage_path('app'),
],

所以这里传递的文件路径应该位于storage/app目录中。

【讨论】:

  • 我也试过这个 Storage::disk('outdoor_real_time_report_path')->copy('old','new') 同样的错误
  • 什么是outdoor_real_time_report_path - 你如何在config/filesystems.php 中定义它?
  • 如何摆脱这个错误?文件已经存在于路径:outdoor_hold_report.csv 我不想要这个?
  • 不,我不能删除然后复制文件。因为文件大小是 400 mb,如果我删除文件并复制需要时间,同时用户点击下载文件,他会遇到错误,有更好的解决方案吗?
  • 如果你只是在本地文件系统上复制文件,它应该不会花费太多时间。但是,如果您认为这是一个问题,您需要创建最适合您情况的解决方案。例如,您可以跟踪每个下载开始/结束,用其他名称保存新文件,然后在 cron 中删除旧文件并在确定文件未下载时将新文件放在那里。您也不需要为新文件使用完全相同的名称,因此您可以在网站上创建新链接并在一段合理的时间后删除旧文件/记录(例如,您假设下载最多需要 1 小时,1 小时后您删除旧文件)
【解决方案2】:

其实我做错了

这应该是答案,除了 Marcin 答案谢谢:)

 \Storage::disk('outdoor_real_time_report_path')->copy($file_date['file_name_tmp'], $file_date['file_name']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2023-03-17
    • 2020-07-21
    • 2021-11-22
    • 2017-03-08
    • 2019-06-08
    相关资源
    最近更新 更多