2017-12-31 28 views
0

Ich bin Tring zwei Dateien auf dem Server zu laden, aber die versucht es sei denn, ich schrieb in @ app.route (‚Ergebnis‘) immer in Ausnahmemit try außer in Python aber zurückgeben 400 schlecht requst vom Server

from flask import Flask,render_template,redirect, url_for,request,redirect 
import os, sys 
from pymongo import MongoClient 
from werkzeug import secure_filename 
app = Flask(__name__,static_folder='static', static_url_path='') 
import numpy 
@app.route('/') 
def showRoot(): 
    return render_template('index.html') 

@app.route('/result/') 
def result(): 

    return render_template('test.html') 

ALLOWED_EXTENSIONS = set(['txt', 'docx', 'png', 'jpg']) 
def allowed_file(filename): 

    return '.' in filename and \ 
      filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS 

@app.route('/request_page/', methods=['GET','POST']) 
def request_page(): 
    UPLOAD_FOLDER = '/var/www/helloworldapp/app/uploads/' 
    UPLOAD_FOLDER = os.path.expanduser(UPLOAD_FOLDER) 
    if (not os.path.exists(UPLOAD_FOLDER)): 
     os.makedirs(UPLOAD_FOLDER) 
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 
    try: 
     Case_ID = '171129001' 
     mRNA_file = request.files['mRNA_file_name'] 
     lncRNA_file = request.files['lncRNA_file_name'] 
     if (mRNA_file != '' and allowed_file(mRNA_file.filename)) and  (lncRNA_file != '' and allowed_file(lncRNA_file.filename)): 
       mRNA_file_name = Case_ID+secure_filename(mRNA_file.filename) 
       lncRNA_file_name = Case_ID+secure_filename(lncRNA_file.filename) 
       mRNA_file.save(UPLOAD_FOLDER+ mRNA_file_name) 
       lncRNA_file.save(UPLOAD_FOLDER + lncRNA_file_name) 

       #import sys 
       #sys.path.append('/var/www/helloworldapp/app') 
       #from . import Expression_profiles_preprocessing 
                #return(Expression_profiles_preprocessing.Concatenating_gene_expression_profile(Case_ID,mRNA_file_name,lncRNA_file_name)) 

     else: 
      return 'Upload Failed' 
    except Exception as e: 
      return render_template('test.html', error=str(e)) 

die außer Ergebnis auf meiner Website ist wie dies web result

gibt es eine Lösung für dieses Problem zu lösen? Übrigens, zwei Dateien, die nach HTML hochgeladen werden, sind im Dokument meines Servers zu sehen.

+1

Bitte können Sie die Fehlermeldung von der Ausnahme geworfen hinzufügen? – PRMoureu

+0

Meinst du "der Versuch, außer wo ich schrieb in' @ app.route ('/ request_page') 'ist immer in Ausnahme" statt? –

+0

@PRMoureu https://i.stack.imgur.com/a9jZn.png Die Fehlermeldung ist hier. – st504132005

Antwort

0

Im gehend auf einem Bein hier ohne den Call-Stack zu gehen und sagen, dass Ihr Problem könnte dies durch eine Änderung gelöst werden:

mRNA_file = request.files.get('mRNA_file_name') 
lncRNA_file = request.files.get('lncRNA_file_name') 

Ive laufen in dieser Frage ein paar Mal in der Flasche, und 80 % der Zeit hat dies das Problem gelöst.

bearbeiten:

Ihr Problem ist, dass standardmäßig .get kehrt None. Da Sie also nur überprüfen, ob mRNA_filename oder lncRNA_filename NICHT gleich einer leeren Zeichenfolge ist, wird diese bedingte Anweisung übergeben. Was ich stattdessen tun würde, ist dies:

mRNA_file = request.files.get('mRNA_file_name') <-- Here you can add another argument that would act as the default, else this will return None 
lncRNA_file = request.files.get('lncRNA_file_name') 
     if (mRNA_file and allowed_file(mRNA_file.filename)) and  (lncRNA_file and allowed_file(lncRNA_file.filename)): 
       mRNA_file_name = Case_ID+secure_filename(mRNA_file.filename) 
       lncRNA_file_name = Case_ID+secure_filename(lncRNA_file.filename) 
       mRNA_file.save(UPLOAD_FOLDER+ mRNA_file_name) 
       lncRNA_file.save(UPLOAD_FOLDER + lncRNA_file_name) 
+0

Haben Sie die Website über die Verwendung von request.file.get() -Funktion Wenn ich meinen Code in diesen ändern, hat es einen anderen Attribut Fehler, wenn der Code Zeile.33 ausgeführt wurde Es geht um {'NoneType' Objekt hat keine Attribut 'Dateiname'} – st504132005

+0

Das liegt daran, dass die Get-Operation None zurückgibt. Anstatt die Gleichheit von mRNA_file und lncrna_file zu! = '' Zu prüfen, setze es auf nur wenn mRNA_file und lncrna_file. Dies ergibt false, wenn eine dieser beiden Variablen falsch ist. Der Kern Ihres Problems besteht darin, dass die Dateien mit den Schlüsseln mRNA_file oder lncRNA_file nicht existieren. –

+0

@ st504132005 Siehe meine bearbeitete Antwort für weitere Informationen und Vorschläge –

Verwandte Themen