flask upload file

import os
from PIL import Image
from flask import Flask, request, redirect, url_for
from werkzeug import secure_filename
from flaskext.uploads import (UploadSet, configure_uploads, IMAGES,
                              UploadNotAllowed)

app = Flask(__name__)

app.config['UPLOADED_PHOTOS_DEST'] = '/tmp/testuploadext'
app.config['UPLOADED_APPLES_DEST'] = '/tmp/testuploadext2'

photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)

apples = UploadSet('apples', IMAGES)
configure_uploads(app, apples)


@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST' and 'photo' in request.files:
        filename = photos.save(request.files['photo'])
        return redirect(url_for('upload_file', filename=filename))
    return '''
    <!doctype html>
    <title>Upload New File</title>
    <h1>Upload New File</h1>
    <form enctype='multipart/form-data' action='' method='POST'>
        <input type='file' name='photo'/>
        <input type='submit' value='Upload'/>
    </form>
    '''


@app.route('/apple', methods=['GET', 'POST'])
def upload_file_apple():
    if request.method == 'POST' and 'apple' in request.files:
        filename = apples.save(request.files['apple'])
        return redirect(url_for('upload_file_apple', filename=filename))
    return '''
    <!doctype html>
    <title>Upload New File Apples</title>
    <h1>Upload New File Apples</h1>
    <form enctype='multipart/form-data' action='' method='POST'>
        <input type='file' name='apple'/>
        <input type='submit' value='Upload'/>
    </form>
    '''


with app.test_client() as c:
    resp = c.get('/')
    assert '<title>Upload New File</title>' in resp.data

    apple='/media/Share/Pics/fucking-brilliant.jpeg'
    img = Image.open(apple)
    resp = c.post('/', data=dict(
        photo='/media/Share/Pics/fucking-brilliant.jpeg'
    ), follow_redirects=True)
    # How to test file uploading?
    #assert 'photo' in request.files

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章