2010-06-30 39 views
10

Có thể bất kỳ ai đề xuất cho tôi cách tốt nhất để viết mã để tải lên tệp trong CakePHP không?Thực tiễn tốt nhất để tải tệp lên trong CakePHP

  • Tôi cần tải tệp lên và lưu tên của nó trong bảng.
  • Nếu lưu bản ghi không thành công, không nên tải tệp lên.
  • Nếu tải lên không thành công thì bản ghi sẽ được khôi phục.
  • Mã nên được tái sử dụng
  • tôi cần phải tải lên các tập tin trong afterSave callback
+2

FYI, khi bạn xử lý bằng PHP, tệp tải lên đã được hoàn tất, tệp nằm trong một thư mục tạm thời. Bạn chỉ phải chế độ tệp này đến vị trí cuối cùng và chèn hàng tương ứng vào DB. (Và xử lý các lỗi có thể.) – sibidiba

Trả lời

16

Chỉnh sửa (2015): Xin vui lòng xem danh sách Awesome CakePHP cho plugin file hiện hành (chi nhánh 2.x here)


Chỉnh sửa (2013): Câu trả lời này là bây giờ là một chút ngày, vì vậy tôi sẽ chỉ để lại một danh sách tất cả các plugin upload đề cập:


Câu trả lời gốc (từ năm 2010):

Bạn có thể xem xét sử dụng Media plugin đã được nói đến ở CakeFest cuối cùng. Nó khá toàn diện, chứa các tính năng như tạo các biến thể tệp (ví dụ: hình thu nhỏ của hình ảnh hoặc video), trình trợ giúp xuất các loại tệp khác nhau và các thành phần để giúp tạo nhiều biểu mẫu tải lên nhanh hơn; và cũng đã tập trung mạnh vào bảo mật ngay từ đầu như tôi có thể thu thập từ the slides. Tôi sử dụng nó trong sản xuất và thấy nó hoạt động tốt, cộng với nó có vẻ là dưới active development hơn các tùy chọn khác tôi đã thấy nếu đó là bất cứ điều gì để đi theo (ví dụ: MeioUpload behavior, Uploader plugin, FileUpload plugin và khác nhau Bakery/blog bài viết về chủ đề).

+1

Hãy để tôi không biết phải thêm [Gói Tải lên] (https://github.com/szajbus/uploadpack) vào danh sách –

+1

[Trình tải lên] (http://github.com/milesj/cake-uploader)/commit/master) và [Upload Pack] (https: // github.com/szajbus/uploadpack) là 2 tệp libPH CakePHP 2.x được hỗ trợ hàng đầu mà tôi đã tìm thấy sau nửa ngày nghiên cứu và cố gắng triển khai. – Anthony

+2

[Upload Plugin 2.0] (https://github.com/josegonzalez/upload) bởi Jose Diaz-Gonzalez có vẻ như là một lựa chọn tốt. –

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