1.讓別人下載已存在的檔案

import os
from flask import Flask, send_from_directory

app = Flask(__name__)

@app.route("/download/<filename>")
def download(filename):
    dirpath = os.path.join(app.root_path, 'download')  # 這個資料夾是要讓別人下載檔案的資料夾
    # 透過flask內建的send_from_directory
    return send_from_directory(dirpath, filename, as_attachment=True)  # as_attachment=True 一定要寫,不然會變開啟,不是下載

2.讓別人上傳檔案

[參考頁面](http://blog.csdn.net/qq_25730711/article/details/53643758)

3.讓別人下載頁面上的資料

## json 格式!!
# 有時候要讓使用者能夠下載自己操作頁面後的資料
# 例如:依照自選的日期和飯店的資料,使用者想要下載一個csv或json檔案
## 但有個要注意的地方,這個api沒辦法使用ajax請求來下載檔案(方法之後再補),現在只能用<a>超連結</a>的href屬性來做下載!!!!
from flask_restful import Api, Resource

restApi = Api(app,prefix='/api')
# 這邊用flask_restful package來示範
class downloadApi(Resource):
    def get(self):
        data = {'test':1}
        return Response(
            json.dumps(data), # 不能用str(data),之後下載的檔案直接用json.load()即可讀json檔案
            mimetype='application/json',
            headers={'Content-disposition':
                     'attachment; filename={0}.json'.format(datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))})


restApi.add_resource(downloadApi,'/download')
## csv 格式(1)
class downloadApi(Resource):
    def get(self):
        csv = '1,2,3\n4,5,6\n'
        return Response(
            csv,
            mimetype='text/csv',
            headers={'Content-disposition':
                    'attachment; filename={0}.csv'.format(datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))})


restApi.add_resource(downloadApi,'/download')
[flask_csv官方文件](https://pypi.python.org/pypi/Flask-CSV/1.0.1)
## csv 格式(2)
# 使用flask_csv package的send_csv
# 可以用python dict的結構來產生csv
from flask_csv import send_csv
class downloadApi(Resource):
    def get(self):
        return send_csv([{'name':'josh'},{'name':'tony'}],
                        "{0}.csv".format(datetime.now().strftime('%Y-%m-%d_%H-%M-%S')), 
                        ['name'])

restApi.add_resource(downloadApi,'/download')

results matching ""

    No results matching ""