2011-08-25 39 views
9

tôi đang tạo một api RESTful cho một trang web Django. Tôi đang sử dụng tastypie để thực hiện. Vấn đề của tôi là tôi không thể thiết kế cách đăng hình ảnh hoặc tệp qua api này. Ý tôi là, để tạo một đối tượng trên cơ sở dữ liệu, chúng tôi đang đăng dữ liệu ở định dạng json. Nhưng làm thế nào tôi có thể đặt một tập tin bên trong json đó?Gửi bài qua RESTful api với django và ngon

Tôi thấy rằng có hai phương pháp một trong số đó là chuyển đổi định dạng Base64. Tôi không muốn sử dụng nó bởi vì trong các bài kiểm tra của tôi, hình ảnh 74kb là 110kb-120kb khi chuyển đổi thành Base64.

Vì vậy, ai cũng có thể giải thích cho tôi cách tôi có thể đăng một đối tượng chứa các tệp bên trong nó?

+0

ngã ba của tôi bao gồm các bản vá lỗi cho phép upload file thông qua hình thức nhiều phần dữ liệu https://github.com/nisc/django-tastypie – nisc

Trả lời

1

Nối tiếp tệp vào yêu cầu JSON là một cách hơi khó xử, và cũng có nghĩa là bạn mất một số tệp tải lên tự động của Django, ví dụ: ghi tệp vào bộ nhớ theo yêu cầu và chỉ chuyển sang ghi nó vào đĩa khi nó ở trên một kích thước nhất định.

Đối với chế độ xem tệp tải lên, bạn có thể muốn thoát khỏi chế độ ăn ngon và viết chế độ xem một cách rõ ràng.

Sau đó, bạn có thể hoặc là sử dụng một hình thức nhiều phần dữ liệu tiêu chuẩn, (và chỉ truy cập vào các tập tin sử dụng request.FILES như thường lệ, hoặc (phức tạp hơn), create a view that will accept the raw file content

+3

Trong Tôi đã thấy một lĩnh vực tài nguyên được gọi là ImageField. Có thể nó xử lý tải lên tập tin nhưng tôi không có bất kỳ ý tưởng làm thế nào để gửi các tập tin bên trong json của tôi. –

5

Nhìn đây:. https://github.com/toastdriven/django-tastypie/issues/42

Hình như đã có cách tiếp cận hãy làm điều đó, nhưng không hoạt động tốt.

Sau một thời gian dài chơi với các giải pháp khác nhau (https://github.com/klipstein/django-tastypie/commit/e0f86ddffeb46c77704328a3b5899ec08e18e4eb, https://github.com/klipstein/django-tastypie/commits/form-data) đang xử lý tệp trong nội dung ngon tôi đã đến kết luận rằng điều này không thể được giải quyết một cách tao nhã nếu bạn muốn hỗ trợ tải lên tệp từ mọi trình duyệt.

Có một cái nhìn về ngã ba này

https://github.com/ff0000/django-tastypie/commit/1fbc0a

+0

Tôi không thể tìm ra trạng thái hiện tại là gì. Chúng ta nên gửi những tập tin nào cho người sành ăn? – Alper

Các vấn đề liên quan