讀取影像~

103 views
Skip to first unread message

Nick

unread,
Oct 18, 2017, 12:00:12 PM10/18/17
to python.tw
各位前輩好~想詢問以下程式,我想將利用此程式選擇電腦內的照片檔,然後按輸出將其圖片顯示在底下,但總是出現400之錯誤,上網找了許久,能推論大概問題在於未將照片傳到serve端去,以至於電腦無法在系統端上找到相關照片,但關於這方面的見解,網路上較少以文章可參考,想詢問是否有前輩能給予指導,告知這個程式該新增那些東西,才能順利將自己上傳的照片顯示出來。

html='''
<html>
<head>
<title>找出照片</title>
<body>
<h1>開啟並選擇檔案</h1>
<p>顯示照片位置</p>
<form action=upload_file_form method="post">
<input type="file" name="file"></br>
<br>
<br>
<input type="submit" value="輸出">
</form>
</body>
</html>
'''
from flask import Flask,request
app = Flask(__name__)


@app.route("/")
def hello():
    return html.format('')
UPLOAD_FOLDER='/home/bernie/flask_web_demaon/ovpn_files'

@app.route("/upload_file_form",methods=['GET','POST'])
def upload_file_form():
       file = request.files['file']
       filename = secure_filename(file.filename)
       file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
       return send_from_directory('static/report/flexmonkey/html','upload.html')
app.run(port=80)

jimmykuo

unread,
Oct 18, 2017, 1:51:32 PM10/18/17
to pyth...@googlegroups.com

比較明顯的錯誤是

<form action=upload_file_form method="post">

缺少 enctype,應該是

<form action=upload_file_form method="post" enctype="multipart/form-data">

請參考
http://flask.pocoo.org/docs/0.12/patterns/fileuploads/


Nick wrote:

各位前輩好~想詢問以下程式,我想將利用此程式選擇電腦內的照片檔,然後按
輸出將其圖片顯示在底下,但總是出現400之錯誤,上網找了許久,能推論大概
問題在於未將照片傳到serve端去,以至於電腦無法在系統端上找到相關照片,
但關於這方面的見解,網路上較少以文章可參考,想詢問是否有前輩能給予指
--
這是 Google 網上論壇針對「python.tw」群組發送的訂閱通知郵件。
如要取消訂閱這個群組並停止接收來自這個群組的郵件,請傳送電子郵件到
pythontw+u...@googlegroups.com
<mailto:pythontw+u...@googlegroups.com>。
如要在這個群組張貼留言,請傳送電子郵件到 pyth...@googlegroups.com
<mailto:pyth...@googlegroups.com>。
請前往以下網址造訪這個群組:https://groups.google.com/group/pythontw
如需更多選項,請前往:https://groups.google.com/d/optout

Nick

unread,
Oct 19, 2017, 8:35:04 AM10/19/17
to python.tw
謝謝前輩的回覆,小弟會再下去專研前輩給的網站及說明,萬分感謝!!

Nick

unread,
Oct 22, 2017, 12:28:32 PM10/22/17
to python.tw
想請教前輩,目前能成功顯示圖片,不過是在隔頁顯示,想詢問如何將圖片縮小調整成固定大小,並在同頁顯示,謝謝前輩!! 因為照片顯示出來是布滿了頁面,想在文字底下呈現圖片即可~~至於隔頁的問題,有爬文大概是要在form底下加入東西使其可再同頁顯示,不過試很久還是無法再同頁顯示~

import os
from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename

UPLOAD_FOLDER = 'C:\\Users\\Administrator\\Desktop\\照片\\lena'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('uploaded_file',
                                    filename=filename))
    return '''
    <!doctype html>
    <title>上傳照片並顯示</title>
    <body>
    <h1>選擇檔案</h1>
    <p>顯示照片位置</p>
    <form method=post enctype=multipart/form-data>
      <p><input type=file name=file>
         <input type=submit value=輸出>
    </form>
    {0}
    </body>
    </html>
    '''
from flask import send_from_directory

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)

from werkzeug import SharedDataMiddleware
app.add_url_rule('/uploads/<filename>', 'uploaded_file',
                 build_only=True)
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
    '/uploads':  app.config['UPLOAD_FOLDER']
})
app.run(port=80)
Reply all
Reply to author
Forward
0 new messages