2017-08-01 90 views
0

我已经写下了一个视图和模板,用两个不同的表单域上传两个文件,但不幸的是,它只上传一个来自第一个输入文件的文件。用Django上传多个表单域的文件?

这是应该上传两个文件到媒体文件夹模板文件: tamplate.html

{% extends 'protocol/base.html' %} 

{% load staticfiles %} 


{% block content %} 

<style type="text/css"> 

.button { 
    background-color: #ff9800; /* Green */ 
    border: none; 
    color: black; 
    padding: 10px 32px; 
    text-align: center; 
    text-decoration: none; 
    display: inline-block; 
    font-size: 16px; 
    margin-left: 250px; 
    margin-top: 10px; 
    margin-bottom: 30px; 
} 

.input { 
    margin-left: 250px; 
} 
.text { 
    margin-left: 250px; 
} 
.heading{ 
    margin-left: 250px; 
} 
</style> 

<form method="post" enctype="multipart/form-data"> 
<div class="heading"> 
<h1> Machine Learning Modeling.. </h1> 
<h2> Upload CSV files contains both, positive and Negative peptides.. </h2> 
</div> 
    {% csrf_token %} 
    <input class="input" type="file" name="myfile"> 
    <input class="input" type="file" name="myfile_1"> 
    <button class="button" type="submit">Upload</button> 
    </form> 

    {% if uploaded_file_url %} 
    <p class="text" >File uploaded successfully. </p> 
    {% endif %} 

{% endblock %} 

Views.py

from django.shortcuts import render 
from django.core.files.storage import FileSystemStorage 
from django.shortcuts import render, redirect 
from django.conf import settings 

import os 
import glob 
from django.core.files.storage import FileSystemStorage 
#from django.core.servers.basehttp import FileWrapper 
from wsgiref.util import FileWrapper 
import urllib, mimetypes 
from django.http import HttpResponse 
from django.utils.encoding import smart_str 


# Create your views here. 
def predict(request): 



    if request.method == 'POST' and request.FILES['myfile']: 
     myfile = request.FILES['myfile'] 
     fs = FileSystemStorage() 
     filename = fs.save(myfile.name, myfile) 
     uploaded_file_url = fs.url(filename) 

    if request.method == 'POST' and request.FILES['myfile_1']: 
     myfile = request.FILES['myfile_1'] 
     fs = FileSystemStorage() 
     filename = fs.save(myfile.name, myfile) 
     uploaded_file_url = fs.url(filename) 


     return render(request, 'prediction/thanks.html', {}) 

    return render(request, 'prediction/prediction.html') 

如何上传用的多输入多领域的文件表格

回答

0

您可以尝试在request.FILES上使用.get方法。 在下面提供的代码中,我也将您的myfile变量重命名为它们是唯一的......就像一个好习惯。

# Posted form. 
if request.method == "POST": 

    if request.FILES.get('myfile', None): 
     file_1 = request.FILES.get('myfile') 
     fs = FileSystemStorage() 
     filename = fs.save(file_1.name, file_1) 
     uploaded_file_url = fs.url(filename) 

    if request.FILES.get('myfile_1', None): 
     file_2 = request.FILES.get('myfile_1') 
     fs = FileSystemStorage() 
     filename = fs.save(file_2.name, file_2) 
     uploaded_file_url = fs.url(filename) 

试试这个建议吧。如果它不起作用,请尝试打印表单提交中的输出并查看发生了什么。