Как обработать несколько файлов в петиции, чтобы восстановить их и показать в виде? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь загрузить несколько файлов изображений с формой в формате html в django, но когда при нажатии кнопки загружается только один файл, как я могу восстановить несколько файлов и показать их в моем представлении?

<form enctype="multipart/form-data" method="post">
    {% csrf_token %}
        <h4>Búsqueda general</h4>
        <input type="file" name="document" accept="image/*" multiple="multiple"> <br>
        <center><button type="submit" id="subir">Subir imagenes</button></center><br>
 </form>
 <ul>
        {% if uploaded_file_url %}
             <p>File uploaded at: <a href="{{ uploaded_file_url }}">{{ uploaded_file_url }}</a></p>
            <li><img src="{{ uploaded_file_url }}" title ="{{ filename }}" id="dragElement"></li>
        {% endif %}
</ul>

views.py

def cuad(request):
    if request.method == 'POST' and request.FILES.getlist('document', False):
        myfile = request.FILES['document']
        fs = FileSystemStorage()
        filename = fs.save(myfile.name, myfile)
        uploaded_file_url = fs.url(filename)
        print(request.FILES)
        return render(request, "visores/cuadrantes.html", {
            'uploaded_file_url': uploaded_file_url,
            'filename': filename
        })
    return render(request, "visores/cuadrantes.html")

Я получаю это на консоли при печати запроса:

<MultiValueDict: {'document': [<TemporaryUploadedFile: P5140037.JPG 
(image/jpeg)>, <TemporaryUploadedFile: P5140038.JPG (image/jpeg)>, 
<TemporaryUploadedFile: P5140039.JPG (image/jpeg)>, 
<TemporaryUploadedFile: P5140043.JPG (image/jpeg)>]}>

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

cuadrantes.html

<form enctype="multipart/form-data" method="post">
    {% csrf_token %}
        <h4>Búsqueda general</h4>
        <input type="file" name="document" accept="image/*" multiple="multiple"> <br>
        <center><button type="submit" id="subir">Subir imagenes</button></center><br>
</form>
{% for filename, uploaded_file_url in uploaded_documents.items %}
    <li><img src="{{ uploaded_file_url }}" title ="{{ filename }}" id="dragElement"></li>
{% endfor %}

views.py

@login_required
def cuad(request):
    uploaded_documents = {}
    if request.method == 'POST' and request.FILES.getlist('document', False):
        myfiles = request.FILES.getlist('document')
        for document in myfiles:
            fs = FileSystemStorage()
            filename = fs.save(document.name, document)
            uploaded_file_url = fs.url(filename)
            uploaded_documents[filename] = uploaded_file_url
    return render(request, "visores/cuadrantes.html", {
        'uploaded_documents': uploaded_documents,
    })
0 голосов
/ 26 апреля 2019

Вы можете попробовать что-то вроде:

def cuad(request):
    if request.method == 'POST' and request.FILES.getlist('document', False):
        myfiles = request.FILES['document']
        uploaded_documents = {}
        for document in myfiles:
            fs = FileSystemStorage()
            filename = fs.save(document.name, document)
            uploaded_file_url = (fs.url(filename))
            uploaded_documents[filename] = uploaded_file_url

        return render(request, "visores/cuadrantes.html", {
            'uploaded_documents': uploaded_documents,
        })
    return render(request, "visores/cuadrantes.html")

в шаблоне:

{% for document in uploaded_documents %}
    {% for filename, file_url in document.items %}
         <p>File uploaded at: <a href="{{ file_url }}">{{ file_url }}</a></p>
        <li><img src="{{ file_url }}" title ="{{ filename }}" id="dragElement"></li>
    {% endfor %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...