2

我正在构建一个站点,该站点要求用户将每个大约 70MB 的图像上传到我的服务器。目前我正在运行一个具有 512MB RAM 的 Linode。由于此服务器上有其他站点,因此没有太多额外的内存可用,因此是否可以通过将图像直接转储到文件系统来将这些图像上传到服务器而不占用任何 RAM,或者通过 POST 上传任何文件必须先加载到内存中,然后才能转储到文件系统?此问题的性质是否需要具有大量 RAM 的服务器?

有没有办法以某种方式将 ftp 客户端集成到 html 表单中?如果这有所作为,我正在使用 Django。

4

2 回答 2

5

在您的项目设置中,将 FILE_UPLOAD_MAX_MEMORY_SIZE 设置为较小的值(例如 1024 字节)。这将使 Django 假脱机 request.FILES 更快地写入磁盘,而不是用完 RAM

如果您想了解更多详细信息,请查看文档:https ://docs.djangoproject.com/en/dev/ref/settings/#file-upload-max-memory-size

于 2012-05-09T13:02:11.947 回答
1

根据您的要求.... django 文件上传有两种类型的上传。

1 - InMemory 上传 2. 临时上传

在 InMemoryUpload 的情况下,您上传​​的文件仅通过 request.FILES 在 ram 中,但可以设置该上传以将其从 InMemoryUpload 转换为 TemporaryUpload 最终使用 /tmp 文件夹来存储它.. 节省 RAM ...

在 settings.py 中:-

FILE_UPLOAD_MAX_MEMORY_SIZE = #something

将上传到内存中的文件的最大大小(以字节为单位)。大于 FILE_UPLOAD_MAX_MEMORY_SIZE 的文件将被流式传输到磁盘。默认为 2.5 兆字节。

FILE_UPLOAD_TEMP_DIR = #到 sme 路径

上传文件大于 FILE_UPLOAD_MAX_MEMORY_SIZE 的目录将被存储。默认为您系统的标准临时目录(即大多数类 Unix 系统上的 /tmp)。

然后,您可以将该文件分块写入所需的目录,因为 /tmp 会在系统关闭后删除所有文件。按照这个链接:

https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#sharing-upload-handler-behavior

于 2013-06-14T12:07:55.060 回答