2016-01-24 2 views
2

Я попытался загрузить два файла в два разных местоположения, но при загрузке файлов я получаю эту ошибку: «Функция ValueError: View не возвращала ответ». Я пробовал все, чтобы заставить его работать, но не повезло.Загрузка двух файлов в другом месте с использованием фляжки

HTML код:

<form action="/NewCases/" method=post class="form-horizontal"> 
<h2>Add New Cases: </h2> 
<div class="input-group"> 
     <span class="input-group-addon">@</span> 
     <input type="text" id="casename" name="casename" class="form-control" 
     placeholder="Enter Case Name:" required> 
</div> 
<div class="input-group"> 
     <span class="input-group-addon">@</span> 
     <input type="text" id="adminname" name="adminname" class="form-control" 
     placeholder="Enter Case Name:" value="{{ current_user.username }}"> 
</div> 
<div class="input-group"> 
     <span class="input-group-addon">@</span> 
     <input type="file" id="imagefile" name="imagefile" class="form-control" 
     placeholder="Enter Hard Disk File:" required> 
</div> 
<div class="input-group"> 
     <span class="input-group-addon">@</span> 
     <input type="file" id="memimagefile" name="memimagefile" class="form-control" 
     placeholder="Enter Memory File:" required> 
</div> 

<div class="control-group"> 
    <div class="controls"> 
     <button type="submit" class="btn btn-success">Signup</button> 
    </div> 
</div> 
</form> 

колба код

@app.route('/NewCases/', methods=['GET', 'POST']) 
def NewCase(): 
    try: 
     if request.method == 'GET': 
      return render_template('admin.html', DICT=DICT) 

     if request.method == 'POST': 
      idtest = str(uuid.uuid4()) 
      idtestfilter = idtest.replace('-','') 

      adname= request.form['adminname'] 
      casen = request.form['casename'] 
      imagefile = request.files['imagefile'] 
      memimagefile =request.files['memimagefile'] 



     if imagefile > 0: 
       imagefilename = secure_filename(imagefile.filename) 
       file.save(os.path.join(UPLOAD_FOLDER , imagefilename)) 
       return redirect(url_for('index')) 
     if memimagefile > 0: 
       imagefilename = secure_filename(memimagefile.filename) 
       file.save(os.path.join(UPLOAD_FOLDER , memimagefile)) 
       return redirect(url_for('index')) 

     c, conn = connection() 
      c.execute("INSERT INTO cases(id,casename, adminname, imagepath, memimagepath) VALUES (%s, %s, %s, %s, %s)", 
         (thwart(idtestfilter),thwart(adname),thwart(casen),thwart(imagefilename),thwart(memfilename))) 
      conn.commit() 
      flash("case inserted!") 
      c.close() 
      conn.close() 



      flash('Cases successfully added') 
      return redirect(url_for('EditCase')) 
    except Exception as e: 
     error = e 

Пожалуйста, помогите мне!

ответ

2

Первое, что нужно отметить, это то, что ваш код на Python терпит неудачу, но вы ловите и игнорируете все исключений (ну, почти все). Основная причина, по которой ваш код Python терпит неудачу, заключается в том, что получен неправильный запрос. Вы бы знали, что если вы не поймаете и не проигнорируете все исключения. По крайней мере, напечатайте сообщение, а raise - исключение.

Во всяком случае, вы загружаете файлы, так что вы должны установить тип кодировки для HTML формы multipart/form-data, как это:

<form action="http://127.0.0.1:5000/" method=post enctype="multipart/form-data" class="form-horizontal"> 

Это и является причиной плохого запроса.

Я предполагаю, что вы импортировали все необходимые модули и функции, такие как uuid, secure_filename и т. Д., Однако вы не совсем правильно сохраняете файлы. Использовать imagefile.save() и memimagefile.save(), а не file.save().

Кроме того, поскольку оба файла могут быть загружены в одно и то же время, а также потому, что есть код базы данных, который должен быть запущен, после сохранения файлов вы не должны return.

И, наконец, ваш код предполагает, что поля формы всегда будут присутствовать в форме. Если один из них отсутствует, ваш код будет сбой с KeyError.

+0

спасибо большое. работает как шарм. – muteb

Смежные вопросы