gpt4 book ai didi

php - 通过 PHP 和 HTTP 上传 AWS S3 文件

转载 作者:可可西里 更新时间:2023-11-01 17:11:13 25 4
gpt4 key购买 nike

我想使用亚马逊的 S3 服务来存储用户上传到我的 LAMP 包中的文件。我想知道什么是最好的(时间、成本、安全性等)来做到这一点。我熟悉使用 PHP 处理使用 HTTP 上传文件,但我总是将它保存到本地存储。我应该有一个 tmp 目录,我可以从中上传 SDK,或者我应该甚至可以将文件从数据变量上传到 S3?此外,我希望能够处理 5 GB 的文件,但目前我只运行半 GB 的 ram,这会在我处于项目的 alfa 时引起任何问题吗?请记住,我的 Web 服务器是 EC2 服务器。感谢您的帮助。

最佳答案

Q1:从内存上传,不创建临时文件。

是的,你可以做到。 Amazon SDK 具有“putObjectFile”和“putObjectString”函数,第一个从临时文件创建对象,第二个从字符串创建对象。

Q2:上传大文件(5GB)。

虽然您可以获得具有 5GB 内存的服务器,但在上传发生时仅将要上传的数据存储在内存中有点过分了 - 因此从该文件中逐 block 上传和流式传输临时文件会可能是明智的。要在 PHP 中处理 curl 中的 block ,您可能需要添加 CURLOPT_READFUNCTION一次读取文件的一部分以进行上传。

The name of a callback function where the callback function takes three parameters. The first is the cURL resource, the second is a stream resource provided to cURL through the option CURLOPT_INFILE, and the third is the maximum amount of data to be read. The callback function must return a string with a length equal or smaller than the amount of data requested, typically by reading it from the passed stream resource. It should return an empty string to signal EOF.

您可以在 Amazon SDK 中找到 curl 函数,函数 getResponse()。该类被标记为“final”,因此您需要实际修改 SDK 才能将其添加进去。

Q3:成本。具有稍大硬盘(用于存储临时文件)的服务器很可能比添加内存更便宜。

Q4:安全。您可以将您的临时文件存储在网络根目录之外,因此它们将与您的网络服务器一样安全。如果您的网络服务器受到威胁,他们无论如何都会获得您的亚马逊 key - 因此这实际上不应该比保护您的应用程序的其余部分更令人担忧。

关于php - 通过 PHP 和 HTTP 上传 AWS S3 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com