问题标签 [flysystem]
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.
php - 使用 Flysystem 上传 S3:XAmzContentSHA256Mismatch
我正在尝试使用 League 的 AWS S3 v3 Flysystem 将文件从本地硬盘上传到 Amazon S3。这是我的功能:
我不是 100% 确定发生了什么变化,但现在我们在尝试上传时从 AWS 收到此错误:
AWS HTTP 错误:客户端错误响应 [url] https://s3.amazonaws.com/bucket/directory/file.ext?partNumber=1&uploadId=BigLoNGsString_oF_CHARacTers.moREstuFF-- [状态代码] 400 [原因短语] 错误请求 XAmzContentSHA256Mismatch (客户端):提供的“x-amz-content-sha256”标头与计算的内容不匹配。
在上面的代码中,这个字符串是一个(非常大的 XML 字符串)的一部分,它作为被传递给catch
块的异常消息而返回。
据我所知,阅读有关此错误的稀疏信息,我可以找到,这在某种程度上表明 S3 认为我发送的内容已损坏,因为上传的每个部分的此标头中放置的哈希与上传的每个部分不匹配亚马逊认为它应该是。
我相信在某些时候这可以正常工作,我只是不太确定从哪里开始调试它。本地文件的权限允许任何人读取它,我可以在我尝试将此文件上传到的 S3 存储桶中成功创建目录,因此我认为它与该方的权限没有任何关系。
我对这个错误意味着什么的理解正确吗?
如果有任何区别,我尝试上传到 S3 的文件是大型视频文件(通常 >250MB,<2GB)。
更新
我在本地也遇到了这个问题,所以我尝试了其中一个建议并重新启动了本地计算机,问题仍然存在。我尝试运行其他也使用相同功能的东西(它上传相关视频文件的较小 jpg 屏幕截图)并且它能够毫无问题地上传它们。有关更多上下文,以下是调用代码:
以上$video
是 的一个实例FFMpeg\Media\Video
和$format
是 的一个实例FFMpeg\Format\Video\DefaultVideo
。据我所知并且可以告诉,在该$video->save(...)
行之后没有对文件进行其他更改
更新#2
问题消失了。不将此作为答案发布,因为它不是一个。这就是我所做的:
drupal-8 - 从节点添加表单直接上传文件不适用于 drupal 8 的 flysytem_dropbox 和 flysystem_s3 模块
我正在使用带有 flysystem_dropbox 和 flysystem_s3 的 Flysystem 模块进行存储。我已经按照模块的 readme.txt 文件中的描述在 settings.php 中配置了方案。
现在,当我将文件从本地同步到 Dropbox 或本地到 s3 时,同步过程工作正常,但是如果我尝试直接从节点存储文件,则将表单添加到 Dropbox 或 s3 它不起作用。我在最近的日志消息链接中收到以下错误
投寄箱错误:
文件字段 field_dropbox_file 的上传目录 dropboxexample:// 无法创建或无法访问。新上传的文件无法保存在该目录下,上传被取消。
S3 错误:
Aws\S3\Exception\S3Exception:在“ https://s3-eu-west-1.amazonaws.com/drupal8test/ ”上执行“PutObject”时出错;AWS HTTP 错误:客户端错误响应 [url] https:// s3-eu-west-1.amazonaws.com/drupal8test/[状态代码] 400 [原因短语] 错误请求 IllegalLocationConstraintException(客户端):未指定的位置约束与此请求发送到的区域特定端点不兼容。- <?xml version="1.0" encoding="UTF-8"?> <Error><Code>IllegalLocationConstraintException</Code><Message>未指定的位置约束与此请求发送到的区域特定端点不兼容。< /Message><RequestId>A0EFF7B64110C2C5</RequestId><HostId>hze5fRf4JLZYsWLrlT5djroRwL/LrxWgzFX9qU5tP+riDfBeYNn900z36HtwktejaqckD2Gwhss=</HostId></Error> 在 Aws\WrappedHttpHandler->parseError()(drupal158/html//var/的第 1583 行核心/供应商/aws/aws-sdk-php/src/WrappedHttpHandler.php)。
我的方案配置如下:
那么谁能告诉我我是否缺少一些配置设置或其他东西?
laravel - 使用 Laravel 从 Web 服务器流式传输 Amazon S3 对象
在我使用 laravel 5.1 构建的 Web 应用程序中,用户可以上传一些我存储在 Amazon S3 中的敏感文件。稍后我希望有权限的用户下载此文件。由于我希望进行此身份验证检查,因此我无法使用传统方法通过直接链接到 S3 中的文件来下载文件。
我的做法:
当用户请求下载时,我的服务器在本地下载文件,然后流式传输给用户。问题:需要很长时间,因为文件有时太大。
为用户提供一个预签名的 URL,以便直接从 S3 下载。URL 仅在 5 分钟内有效。问题:如果该 URL 是共享的,任何人都可以在 5 分钟内下载它。
根据这篇文章,将数据直接从 S3 流式传输到客户端。这看起来很有希望,但我不知道如何实现。
根据这篇文章,我需要:
- 注册流包装器 -这是我的第一个问题,因为我不知道如何获取
S3Client
对象,因为 laravel 使用 flysystem,而且我不知道调用什么方法来获取这个对象。也许我需要在我的 composer.json 中单独包含 S3 包? - 禁用输出缓冲 -我需要在 laravel 中执行此操作还是 laravel 已经处理了它?
我相信其他开发人员之前已经看到过这样的问题,并希望获得一些帮助。如果有人已经使用 laravel 直接从 S3 流式传输到客户端Response::download($pathToFile, $name, $headers)
,那么我很想听听您的方法。
php - 如何使用谷歌云存储作为 Laravel 5 文件系统?
我正在开发一个允许我的用户上传文件的应用程序,并且我已经使用文件系统功能使其与“本地”磁盘一起使用,但现在我想迁移并使用谷歌谷歌云存储。
很难找到一些有用的信息。在文档中有一个使用 Dropbox 的“示例”,但它并不完整。它没有显示如何配置驱动程序和磁盘,所以对我来说还不够清楚。
我想知道该怎么做,因为我从现在开始不知道。
我刚刚使用了本教程http://www.codetutorial.io/laravel-5-file-upload-storage-download/它适用于本地,所以我真的需要迁移到谷歌云存储,仅此而已。我正在使用 openshift,对此我感觉很舒服。
你能帮我知道我应该根据需要配置什么文件系统吗?
谢谢
laravel - 如何使用 flysystem 从 Dropbox 获取 url?
您好,我已经使用 laravel5 上传了我的文件,https://github.com/GrahamCampbell/Laravel-Dropbox集成到 Dropbox 并成功,然后我想在前端获取我的 imgsrc="" 的 url,我怎么能得到那个网址?
imgsrc 的网址在哪里?
php - 带有来自 Flysystem 的 php 资源的 BinaryFileResponse
我需要使用BinaryFileResponse
Length Headers 和 co 来正确处理视频。我还希望用户允许配置其他存储(S3、Dropbox)。flysystemreadStream
方法将返回一个resource
但BinaryFileResponse
需要一个string
路径。处理这个问题的最佳方法是什么?首先将整个文件下载到服务器,直到响应?
laravel-5.1 - 使用 openstack API 库 php-opencloud 连接到 softlayer 对象存储
是否有人尝试使用php-opencloud库连接到 softlayer 对象存储?
当图书馆尝试进行身份验证时,我收到了 400 个错误响应。
从我在 php-opencloud 库中看到的内容来看,它使用此处描述的身份验证方法,它使用 v2/token 和使用 v1 的 softlayer 对象存储。
基于同一个openstack的softlayer对象存储不支持认证v2吗?
我可以使用他们提供的 sdk(softlayer-object-storage-php) 连接到对象存储,它似乎使用身份验证 v1,问题是我使用的是 laravel 5.1,它具有使用 flysystem 的内置文件系统(thephpleague/flysystem ) 具有使用 php-ocencloud 的 openstack 适配器。
这将非常好,并且会节省我只使用驱动程序的时间,而不是我必须使用 softlayer sdk 构建自定义驱动程序并让我重新发明轮子。
我在 config/filesystems.php 中的配置
我尝试像这样连接:
错误是:
laravel - 如何在 Laravel 存储上启用“减少冗余”
我正在使用 Laravel 5.2 文件系统存储类。
以下是我将对象放入存储桶的方式:
如何在选项中添加 StorageClass => REDUCED_REDUNDANCY?我试图添加 config/filesystem.php 但它不起作用
谢谢
php - Laravel S3 存储盘;has() 返回 false
我正在尝试检查 s3 上是否存在文件,但我不断false
返回。我觉得我做错了什么,因为该文件确实存在于 s3 上。
这是我检查的方式:
这是图片:https ://s3.amazonaws.com/accessesegaming/avatars/c81e728d9d4c2f636f067f89cc14862c.png
这是我的磁盘设置:
这里是composer.json
laravel - Laravel:通过flysystem在s3上上传多个文件
我有一个系统,用户可以上传压缩文件,然后将该压缩文件上传到本地驱动器并解压缩。我知道上传单个文件非常简单。
但提取的文件夹将包含大约 1000 个文件。那么无论如何我可以一次将多个文件上传到s3吗?
我正在寻找一种将整个提取的文件夹上传到 s3 的方法。
任何帮助表示赞赏:)