2013-08-15 19 views
5

Tôi đang thử nghiệm phương thức tải lên() của tôi trong Flask. Vấn đề duy nhất là đối tượng FileStorage trong Flask có phương thức save() mà python đối tượng File không có.Đối tượng Tệp Python vào FileStorage của Flask

tôi có thể tạo tập tin của tôi như thế này:

file = open('documents-test/test.pdf') 

Nhưng tôi không thể kiểm tra phương pháp của tôi tải lên() vì phương pháp sử dụng tiết kiệm().

Bất kỳ ý tưởng nào về cách chuyển đổi đối tượng Tệp này thành đối tượng Flask Filestorage?

+0

Xin chào. Tôi không hiểu những gì bạn đang cố gắng làm ở đây. Bạn có nghĩa là kiểm tra nó mà không cần phải chuyển tập tin vào bình? –

+0

Phương thức handle_upload của tôi nhận một đối tượng tệp làm đối số. Vấn đề là tập tin này cần phải là một đối tượng FileStorage từ Flask và không phải là một đối tượng File từ Python. Đây không phải là vấn đề nếu tôi tải tệp trên trang web nhưng tôi muốn có thể kiểm tra phương thức riêng lẻ – arnoutaertgeerts

Trả lời

0

Các getpost phương pháp kiểm tra khách hàng Flask gọi werkzeug.test.EnvironBuilder dưới mui xe - vì vậy nếu bạn vượt qua trong một cuốn từ điển như là đối số từ khóa data với tập tin của bạn, bạn sẽ có thể làm việc với nó thì:

def test_upload(): 
    with open("document-test/test.pdf", "rb") as your_file: 
     self.app.post("/upload", data={"expected_file_key": your_file}) 
     # Your test here 
8

http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage

Tôi cần sử dụng đối tượng FileStorage cho tiện ích bên ngoài khung kiểm tra và bản thân ứng dụng, về cơ bản sao chép cách tải lên tệp hoạt động bằng biểu mẫu. Điều này làm việc cho tôi.

from werkzeug.datastructures import FileStorage 
file = None 
with open('document-test/test.pdf', 'rb') as fp: 
    file = FileStorage(fp) 
file.save('document-test/test_new.pdf') 
+2

Bây giờ tại http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage –

+0

@ neurosnap là có một cách để chúng ta deconstruct các tập tin và tái tạo trong cần tây? – user805981

+0

@ user805981 bạn có thể cố gắng mã hóa và giải mã hình ảnh trong base64 – Alp