问题标签 [laravel-filesystem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
227 浏览

php - 使用相同的 AWS S3 存储桶将文件从一个目录移动/复制到另一个目录

问题陈述:

我想知道在 Laravel 8 中是否可以将存储的文件从一个目录移动或复制到 AWS 中的另一个目录。我尝试了下面的代码,但它给了我以下错误。

/temp/file.pdf => /case/9​​/file.pdf


例外


代码片段

下面的代码行将我抛出错误

资源


如果,那么可以帮助做同样的事情吗?

快乐编码

0 投票
0 回答
115 浏览

laravel - Laravel 文件使用隐式 AWS 密钥和秘密上传到 S3 不起作用

我在 AWS EC2 实例上托管了我的 Laravel 应用程序,并尝试将文件从 laravel 推送到 S3 存储桶。

EC2 实例具有 Ubuntu 操作系统并已安装 AWS CLI。并且 EC2 实例已附加具有完整 S3 权限的 IAM 角色。因此,我需要在不提供 AWS 密钥和秘密值的情况下将文件从 Laravel 推送到 S3。

此外,我尝试使用 AWS CLI 将文件从 EC2 推送到 S3,它工作正常。

像这样。

但是对于 Laravel,它不起作用。

以下是我的 Laravel filesystems.php S3 驱动程序数组。

相同的代码在我的 lcoalhost 中使用 Laravel“本地”驱动程序没有问题。

据我所知,Laravel 支持隐式提供的 AWS 凭证密钥和密钥。

0 投票
0 回答
856 浏览

laravel-livewire - 如何在 Laravel Livewire 中获取最近上传的非图像临时文件名

我正在使用 Livewire 上传非图像文件。

上传文件时,Livewire 会自动为临时文件生成一个长名称,并将其存储在默认livewire-tmp目录中。

我想知道如何检索最近上传的临时文件名,因为我想在导入处理或删除文件后将其删除,以便该目录的内容不会随着大量临时文件而增长。

在文档中说明如下:

注意:出于安全原因,临时网址仅支持图片上传。

我尝试了以下方法:

但我收到以下错误:

此驱动程序不支持创建临时 URL。

是否有 livewire 功能或解决方法来检索 Livewire 最近上传的文件?

0 投票
0 回答
35 浏览

laravel - laravel如何通过带有符号链接的存储方法访问上传的图像

我正在尝试在 laravel 中上传图像,并且正在使用store方法将其保存在存储中。

它工作正常并将文件保存到storage/app/public/avatar/目录中,其路径将如下所示:

没关系!但我在检索这张图片时遇到了问题!当我尝试这个地址时:

它显示了一个404 not found页面。

反正!我知道,如果我更改public地址storage,它会显示图像。

正常吗?我知道有些事情不好,但我不知道是什么以及为什么!

ps:我php artisan storage:link之前使用并创建了符号链接,所以我的地址是可以访问的。

0 投票
2 回答
526 浏览

javascript - 使用 vue 作为前端从后端 laravel 下载文件

我在 Laravel 中创建了控制器,其中包含以下代码

在我的前端,我使用 javascript 以编程方式下载带有以下代码的文件(可以使用 blob 还是有任何其他方法可以做到这一点?)

我可以下载并查看 txt、php 文件的内容,但是当我尝试下载图像、pdf 等文件时,文件内容为空或不可读。

0 投票
2 回答
45 浏览

php - Laravel copyDirectory 功能不起作用

我想将目录复制或移动到 laravel 中的新目录,但 copyDirectory 函数总是向我返回 false。我的代码有什么问题吗?提前致谢

0 投票
2 回答
196 浏览

laravel - 从 public/storage 到 storage/app/public 的符号链接仍然可以从 web 访问 storage 目录中的文件

我做了什么

当我研究在 laravel 中存储文件时。我遇到了两种方法。

  1. 将资产直接存储在公用文件夹中。
  2. 创建从public/storage到 的符号链接storage/app/public

当我研究哪一个两个使用时,我遇到了这个堆栈溢出链接。 将文件存储在公共目录和 Laravel 5.4 中存储之间的区别 在上面提到的答案中的这个链接中,

公共文件夹意味着文件可以公开访问。

例如 public/images/my-image.jpeg,任何人都可以通过以下方式查看存储在其中的图像mysite.com/images/my-image.jpeg

但是,存储在 storage 目录中的文件仅对您的应用程序可用。

因为,包括上面提到的堆栈溢出帖子,以及我在不同平台上阅读的许多其他帖子,都暗示了public目录中的文件可以通过网络访问而目录中的文件storage不是这样的事实,我试图通过同时存储文件来测试这一点在public目录和storage目录中,一次一个,然后检查文件是否可以通过 web url 访问。
我的尝试如下,

  1. 首先,我在公共目录中添加了路径images/,并在该目录中放置了一些图像(让我们说 test1.jpgtest2.jpgtest3.jpg)。src然后在我的标签属性的 刀片模板中,我img将它们称为 URL('images/test1.jpg')等......并且它们确实在网页上呈现。然后我还尝试通过访问 url 从 url 访问图像 http://localhost:8000/images/test.jpg。结果与预期一致,图像在网页上呈现 + 可从 url 访问
  2. 然后我在php artisan storage:link 控制台上运行命令,根据我阅读的文章,它应该symbolic link在目录 public/storagestorage/app/public. 运行命令后,我 storage在目录中创建了一个名为的新文件夹public 。然后我将所有图像移动到该 public/storage目录。然后将 src属性我的img标签设置为 URL('storage/test1.img')等...图像在网页上呈现。然后我尝试检查图像是否仍然可以从 url 访问。为此,我去了 url 栏 http://localhost:8000/storage/test1.jpg这些图像仍然可以从 url 访问。

问题

但是,根据我提到的答案和其他一些类似的链接,我希望这些图像无法从上面 2) 中的 url 访问,因为这些图像现在应该实际上位于storage/app/public我们创建了指向 from 的符号链接的位置public/storage。(storage目录中的文件不应该公开访问吗?)

这让我想到了两个问题,

  1. public/storage为什么即使在我创建了指向的符号链接storage/app/public并将图像存储在目录中之后,仍然可以从 url 访问图像public/storage
  2. 就像我的情况一样,如果 public/storage仍然可以通过 web url 访问文件中的文件,那么实际创建符号链接有什么好处?它似乎没有提供更多的安全性,因为仍然可以从 url 访问文件。

如果有人能帮助我理解上述两个问题的答案,那将非常有帮助。谢谢。

0 投票
3 回答
702 浏览

laravel - League\\Flysystem\\AwsS3v3\\AwsS3Adapter::__construct():参数 #1 ($client) 必须是 Aws\\S3Client 类型,Aws\\S3\\S3Client 给定

我通过在我的Laravel 8项目中运行以下 composer 命令安装了 s3 flysystem 包

并尝试将请求中的文件存储为

我收到以下错误

League\Flysystem\AwsS3v3\AwsS3Adapter::__construct():参数 #1 ($client) 必须是 Aws\S3Client 类型,给定 Aws\S3\S3Client,在 D:\Projects\Rescale\vendor\laravel\framework\ 中调用src\Illuminate\Filesystem\FilesystemManager.php 在第 229 行

0 投票
0 回答
89 浏览

laravel - 图像 404 - Laravel Spatie 媒体库 - Spatie\MediaLibrary\MediaCollections\Exceptions\InvalidConversion

我遇到了一个问题,我正在努力访问通过 spatie 媒体库处理的媒体。

我已经根据文档在我的模型中定义了我的转换,并且我可以确认我已将图像转换并存储在我的存储目录中。

注意:图像的磁盘设置为私有。

我可以使用以下方法访问图像,该方法返回原始图像。

但是,使用 getUrl() 方法时我无法获取图像:

通过 getUrl() 直接查看图像的 URL 时,我收到一条错误消息,指出:

Spatie\MediaLibrary\MediaCollections\Exceptions\InvalidConversion 没有命名转换44766360-d763-11e8-a698-d59c54cd9ae1.png

我正在尝试按照文档使用 getUrl() 方法访问“预览”的转换:

根据上述 getUrl() 的用法,由于抛出异常,这将为图像返回 404 错误。

我检查了我是否使用以下方法从作业生成了预览,该方法返回 true:

对于预览图像大小,如何访问要在我的应用程序中显示的图像?我要求图像保持私密。

注意:我已经运行了 php artisan storage:link

任何帮助,将不胜感激

0 投票
1 回答
46 浏览

laravel - 有没有办法使用 Laravel 清除 S3 的缓存?

我正在使用 s3 中的 JSON 文件,该文件是在系统中进行某些更改后上传的。由于缓存,我没有得到更新的 JSON,即使它在新的上传之前被删除。