Menu

Liferay: Tải tệp tin (upload file) trong portlet

Tải tệp tin lên là một hoạt động thường xuyên. Bạn có thể sử dụng nó để tải các tệp tin tài liệu (ví dụ: doc, docx, pdf, png...) hoặc các tệp tin dữ liệu (ví dụ: csv, xls, xlsx, odt,..). Có rất nhiều cách để tải một file nên. Tôi sẽ chỉ cho bạn một cách trong bài viết này.



Giả sử, bạn có một portlet được đặt tên là uploadfile-portlet. Portlet này chứa file view.jsp và lớp UploadFilePortlet.class. Sau đây là chi tiết hai tệp tin trên:
File view.jsp chứa các dòng code jsp như sau:
  • Dòng 6: Dòng này sẽ sinh ra giá trị của action value và gán vào thuộc tính action của thẻ form.
  • Dòng 9-13: Các dòng này chứa một form với các thẻ input. Như bạn thấy, form này chứa một thuộc tính đặc biệt đó là thuộc tính enctype. Nếu bạn không khai báo thuộc tính này thì form sẽ không truyền dữ liệu của tệp tin lên.
  • Dòng 10: Đây là một thẻ input. Giá trị của thuộc tính type là "file", thành phần này sẽ gửi dữ liệu sau khi ta nhất nút submit. Giá trị của thuộc tính name là duy nhật trong form này, thuộc tính này sẽ được sử dụng khi đọc dữ liệu file trong controller.
UploadFilePortlet.class được gọi là controller, lớp này chứa một phương thức đi kèm với annotation @ActionMapping. Phương thức này sẽ lấy dữ liệu file và bạn có thể tao tác trên file này theo ý định của bạn. Sau đây là chi tiết lớp UploadFilePortlet:
Chúng ta sẽ tập trung vào một vài dòng đặc biệt:
  • Dòng 10: Mục đích của dòng này là chuyển đối tượng ActionRequest thành đối tượng UploadPortletRequest.
  • Dòng 21: Sứ mệnh của dòng này là lấy dữ liệu của file từ UploadPortletRequest. Tham số của phương thức getFile là giá trị của thuộc tính name của thẻ input  (ở dòng 10 trong file view.jsp).
  • Bây giờ bạn có thể làm bất cứ điều gì với file mà bạn vừa tải lên.
Mã nguồn đây đủ bạn có thể tải về tại đây.
Chú ý:
Hướng dẫn này chỉ áp dụng khi bạn sử dụng MVCPortlet mà không áp dụng cho Spring Framework. Tôi sẽ chỉ cho bạn cách tải file nên khi sử dụng Spring framework trong bài viết tiếp theo.

Không có nhận xét nào:

Đăng nhận xét