from flask import send_from_directory @app.route('/uploads/<filename>') def uploaded_file(filename): return send_from_directory(app.config['UPLOAD_FOLDER'], filename) genericpath.py 若是系統安裝了這個組件的話: 會替換系統自帶的path功能,致使,path失效了。最終會找不到文件。 代碼只有這樣簡短的幾句話而已。就是這個os.path.isfile會有問題。因此,放在uploaded_file中來完成這個動做,就能夠了 """ filename = safe_join(directory, filename) if not os.path.isfile(filename): raise NotFound() options.setdefault('conditional', True) return send_file(filename, **options) 最終的代碼相似於這個樣子: #filename = flask.safe_join(UPLOAD_FOLDER, filename) print(flask.safe_join(UPLOAD_FOLDERS,secure_filename(filename))) print(os.path.isfile(filename)) return flask.send_file(flask.safe_join(UPLOAD_FOLDERS,secure_filename(filename)),as_attachment=True)
從現象上看,好像是genericpath.py將python本身帶的path這個類重寫了,致使全部對path的操做,都指向了genericpath這個裏面,這個類的處理又和系統自帶的有些不太同樣,因此會致使相同的方法返回值徹底不一樣的狀況,python
好比:os.path.isfile這個方法執行時,一樣的一個文件,會得出不一樣的結果。flask