需要帮助设置django文件传输吗

需要帮助设置django文件传输吗,django,file-upload,django-forms,Django,File Upload,Django Forms,我的设置是:Django 1.3/Python 2.7.2/Win Server 2008 R2/IIS 7.5/MS SQL Server 2008 R2。我正在开发一个应用程序,其主要功能是分析上传的文件并生成报告 通过阅读的文档,我相信这是一个解决问题的方法,我已经尝试解决了一段时间(即,基于表单的文件上载完全阻止所有Django响应,直到文件传输完成…即使是中等大小的文件也是如此) 文档中提到了管道上传到S3或Blobstore,这可能是我最终要做的事情,但在开发过程中,我想也许我可以在

我的设置是:Django 1.3/Python 2.7.2/Win Server 2008 R2/IIS 7.5/MS SQL Server 2008 R2。我正在开发一个应用程序,其主要功能是分析上传的文件并生成报告

通过阅读的文档,我相信这是一个解决问题的方法,我已经尝试解决了一段时间(即,基于表单的文件上载完全阻止所有Django响应,直到文件传输完成…即使是中等大小的文件也是如此)

文档中提到了管道上传到S3或Blobstore,这可能是我最终要做的事情,但在开发过程中,我想也许我可以在我控制的服务器上设置我自己的“穷人的S3”。这基本上只是另一个Django实例(或者可能是一个简单的ASP.NET应用程序),其唯一目的是接收上传的文件。这听起来像是django文件传输应该是可能的,并且可以解决django响应性的问题(???)

但我缺少了一些关于这在总体上是如何工作的理解,以及一些细节。也许一个例子会有所帮助:假设我有MyMainDjangoServer和MyFileUploadServer。MyMainDjangoServer将提供视图,包括上传表单。MyFileUploadServer将“捕获”上载的文件。我的问题/困惑如下:

  • 我的上传表单将包含文件以外的其他字段…我是否正确理解MyMainDjangoServer仍然会以某种方式获取表单数据,减去文件数据(基本上是:request.POST),并且文件数据会转移到MyFileUploadServer?这是怎么回事?在上传到MyFileUploadServer的过程中,MyMainDjangoServer是否仍会阻塞

  • 我假设我需要在MyFileUploadServer上做的是有一个视图/URL来处理表单请求并提取request.FILES数据。还需要做什么?表单数据的其余部分会发生什么变化

  • 如何设置此场景的settings.py?django文件传输示例似乎假定为S3或GAE/Blobstore,但可能我缺少一些基础知识

任何建议/答案都值得赞赏……这对我来说是Django中一个令人困惑和沮丧的领域。

“MyMainDjangoServer仍将以某种方式获取表单数据,而不包括文件数据(基本上是:request.POST),文件数据被分流到MyFileUploadServer?这是如何工作的?在上载到MyFileUploadServer的过程中,MyMaindjangServer是否仍会阻塞?”

我知道GAE Blobstore,大概也是S3,通过要求您给它一个
success\uURL
来处理这个问题。在您的情况下,这将是
MyMainDjangoServer
上的url,其中
MyFileUploadServer
上的文件接收视图将在上载完成后将非文件表单数据重新发布到

请查看此处的
create\u upload\u url
方法:

您需要以某种形式重新创建此功能(请参见下文)

“如何为此场景设置我的settings.py?”

您需要创建自己的filetransfers后端,该后端将是一个带有
prepare\u upload
功能的文件

您可以在此处看到App Engine one:

prepare\u upload
方法只包装了上面提到的GAE
create\u upload\u url
方法

因此,在您的settings.py中,您会有如下内容:

PREPARE_UPLOAD_BACKEND = 'myapp.filetransfers_backend.prepare_upload'
(即,
prepare\u upload
功能的导入路径)

对于其余内容,您可以从FileTransfer提供的内容开始:

SERVE_FILE_BACKEND = 'filetransfers.backends.url.serve_file'
# if you need it:
PUBLIC_DOWNLOAD_URL_BACKEND = 'filetransfers.backends.url.public_download_url'
这些依赖于设置的
file_字段.url
(请参阅),并且由于您的文件将位于单独的服务器上,您可能也需要查找Django。(S3和GAE案例假设您使用的是来自的定制Django存储后端)