2016-09-07 4 views
2

フラスコにExcelファイルをアップロードしようとしていて、保存するときに新しい名前を付けようとしています。oldname.xlsxからnewname.xlsxです。ここでFlask - uploadnotallowed error - 保存するファイルの名前を変更するとき

は、これまでの私のコードです:

from flask import Flask, render_template, send_file, request, redirect, url_for 
from flask_uploads import UploadSet, configure_uploads, DOCUMENTS, IMAGES 
from remove_characters import get_csv, edit_data, cleanup_data 
import re 
import os 

app = Flask(__name__) 

#the name 'datafiles' must match in app.config to DATAFILES 
docs = UploadSet('datafiles', DOCUMENTS) 
app.config['UPLOADED_DATAFILES_DEST'] = 'static/uploads' 
configure_uploads(app, docs) 
file_new_name = 'dataexcel' 

@app.route("/upload", methods = ['GET', 'POST']) 
def upload(): 
#user_file is the name value in input element 
if request.method == 'POST' and 'user_file' in request.files: 
    filestorage = request.files['user_file'] 
    path = "static/uploads/" + filestorage.filename 
    filename = docs.save(filestorage, name = file_new_name) 


    return redirect(url_for('results', path = path)) 


return render_template('upload.html') 

だからsave機能では、私は名前のparamにfile_new_nameを渡しているので、その変数の名前で保存されます。私は、フラスコのアップロードのドキュメントからnameのparamを得たが、私はsave機能のための適切なフォーマットを以下のいないよ場合

enter image description here

は、私は思ったんだけど「uploadnotallowed」エラーを取得、または私の構成はありません適切に設定してください。私はフラスコを初めて使うので、まだこのクールなWebフレームワークを学んでいます。ありがとうございます。

答えて

0

変数file_new_name = 'dataexcel'には拡張子(この場合は.xlsx内線)が必要です。したがって、変数はfile_new_name = 'dataexcel.xlsx'

saveのようになるはずです - >filename = docs.save(filestorage, None, file_new_name)です。 Noneはサブフォルダです。サブフォルダを渡す場合は、static/upload/distのように変更してください。

関連する問題