0

我想将一些文件从表单上传到云服务器而不重定向到那里。所以我用 php/ajax 找到了这个教程,但是那里使用了 django 中不存在的函数 - move_uploaded_file。我怎样才能用 django 达到同样的效果?目前我正在使用 django-filetransfers 的一部分,但是在提交我的表单之后,整个部分if request.method == POST都被省略了:

def upload_handler(request):            
    if request.method == 'POST':
        form = ArtifactSubmissionForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect('/')
    else:    
        upload_url, upload_data = prepare_upload(request, "uploadlink")
        form = ArtifactSubmissionForm()    

    myfileid = create_myfileid()
    return direct_to_template(request, 'rte/artifact_inline.html',
        {'upload_url': upload_url,
        'form': form,
        'upload_data': upload_data,
        'myfileid': myfileid,
        'artifact': artifact,
        'submissions': submissions})

和html:

{% load filetransfers %}

{% block artifact %}
<h1>Submit</h1>
<form action="{{ upload_url }}" method="POST" enctype="multipart/form-data">
    {% render_upload_data upload_data %}
    <table>{{ form }}</table>    
    <p>
        <input type="hidden" maxlength="64" name="myfileid" value="{{ myfileid }}" >
    </p>
    <p>
        <input type="submit" value="Submit" />
    </p>
</form>
{% endblock %}

编辑:

我只需要将文件发送到服务器进行进一步处理,然后从服务器响应中读取它们的 url。不需要将它们用作 File 对象。

4

1 回答 1

0

django-storages 插件具有允许您将上传的内容自动存储到您选择的存储库的功能。它有一个烦人的需要链接到您的 MEDIA_URL,但这只是代码,您可以解决它。

源代码可以在这里找到:Django storages

我建议你在网络上寻找你喜欢的人。如果您使用 Amazon Cloudfront,就像我在当前职位上所做的那样,使用通过签名 URL 禁用 HTTPS 的软件每次下载为我们节省了几毫秒,随着时间的推移,这确实会增加。

于 2010-11-14T17:58:40.400 回答