Эквивалент функции move_uploaded_file в django - PullRequest
0 голосов
/ 13 ноября 2010

Я хотел бы загрузить некоторые файлы из формы на облачный сервер без перенаправления туда.Итак, я нашел этот учебник с 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.

1 Ответ

0 голосов
/ 14 ноября 2010

Плагин django-storages имеет функции, которые позволяют автоматически сохранять загруженный контент в выбранный вами репозиторий.Его надо раздражать, связывая с вашим MEDIA_URL, но это всего лишь код, и вы можете обойти его.

Исходный код можно найти здесь: Хранилища Django .

Я рекомендую рутировать по сети для того, кто вам нравится.Если вы используете Amazon Cloudfront, как я делаю на моей нынешней позиции, то, используя тот, который отключает HTTPS по подписанным URL-адресам, мы сэкономили несколько миллионов за загрузку, что со временем накапливается.

...