Trong PrimeFaces 3.4, các thuộc tính <p:fileUpload>
sizeLimit
và allowTypes
không hoạt động trong trường hợp mode="simple"
. Làm cách nào để xác thực kích thước tệp và các loại cho phép?Cách xác thực kích thước và loại tệp trong <p: fileUpload mode = "simple">?
5
A
Trả lời
6
mode="simple"
tạo đồng bằng HTML5 <input type="file">
thay vì sử dụng tải lên tệp jQuery/Ajax, do đó các cơ sở phía máy khách bị giới hạn.
Nếu trình duyệt web hỗ trợ HTML5 File
API mới, thì bạn chỉ có thể sử dụng nó. Nó thêm hỗ trợ cho thuộc tính mới accept
trên <input type="file">
và cho phép JavaScript có quyền truy cập vào các thuộc tính tệp cụ thể như File#size
.
Ví dụ:
<p:fileUpload mode="simple" styleClass="imagesOnlyMax10MB" />
với điều này JS (sử dụng jQuery từ PrimeFaces):
$("input[type=file].imagesOnlyMax10MB").attr("accept", "image/*").on("change", function() {
var max = 10 * 1024 * 1024; // 10MB
if (this.files && this.files[0].size > max) {
alert("File too large."); // Do your thing to handle the error.
this.value = null; // Clears the field.
}
});
Nếu không, đặt cược tốt nhất của bạn thực sự là việc chứng thực nó ở phía máy chủ. Bạn có thể sử dụng ExternalContext#getMimeType()
để có loại mime dựa trên phần mở rộng tệp (bạn có thể quản lý tất cả các loại mime là <mime-mapping>
trong web.xml
; chính loại của bộ chứa có một số loại mặc định).
if (!externalContext.getMimeType(filename).startsWith("image/")) {
// Not an image.
}
Các vấn đề liên quan
- 1. PrimeFaces <p: fileUpload mode = "advanced"> trình xác thực không được kích hoạt
- 2. Có thể xác thực kích thước và loại tệp nhập = = trong html5
- 3. Xác nhận kích thước tải lên tệp
- 4. Cách hạn chế loại tệp trong điều khiển FileUpload
- 5. cách xác thực kích thước tệp bằng HTML và Javascript ở phía máy khách
- 6. 'P 0' <'P! 'trong python và postgresql
- 7. Trong Android, kích thước% p có nghĩa là gì?
- 8. Tệp p: fileUpload được tải lên được lưu ở đâu và làm cách nào để thay đổi?
- 9. Kích thước khối Hadoop và vấn đề kích thước tệp?
- 10. Tuareg-mode và caml-mode
- 11. <asp: FileUpload với UpdatePanel
- 12. Kích thước và loại thông báo RabbitMQ
- 13. jQuery FileUpload không kích hoạt 'done'
- 14. Cách lấy kích thước tệp
- 15. Xác định kích thước của InputStream
- 16. Xác định kích thước tệp hình ảnh + kích thước qua Javascript?
- 17. Delphi và iOS Kích thước tệp
- 18. Kích thước tệp HSQLDB và .lobs
- 19. Kích thước tệp tối đa và kích thước kho lưu trữ tối đa trong Git?
- 20. Cách xác định kích thước của chuỗi và nén nó
- 21. Làm cách nào để hạn chế kích thước tệp loại tệp tải lên bằng PHP?
- 22. Làm cách nào để Xác thực Loại Tệp của Tệp Tải lên?
- 23. EMACS :: linum-mode và kích thước phông chữ (số dòng chưa đọc)
- 24. FileDownload và FileUpload JSF Primefaces không hoạt động
- 25. Cách định vị hộp thoại p: trong Mặt Prime sau khi đổi kích thước
- 26. Kích thước tệp DLL trong bộ nhớ và kích thước trên đĩa cứng
- 27. gitignore theo kích thước tệp?
- 28. Làm cách nào để đặt kích thước tab cho các khối trong "git add -p"?
- 29. tương đương của p [0] và * p với nhiều loại mảng không đầy đủ
- 30. Cách nhận thời lượng, kích thước và kích thước video trong PHP?
Bất kỳ lý do gì để hạn chế bản thân sử dụng chế độ đơn giản. [Điều này] (http://stackoverflow.com/questions/5697605/limit-the-size-of-an-file-upload-html-input) có thể giúp bạn hiểu nếu bạn đang tìm kiếm một giải pháp phía khách hàng như là chế độ đơn giản sử dụng tải lên trình duyệt gốc mà không bị hạn chế. – Ravi
Tôi đang sử dụng chế độ đơn giản vì hai lý do: (a) Tôi chỉ giới hạn số lượng tệp được tải lên ONE và (b) Tôi muốn tệp được tải lên trong nhấp vào nút gửi biểu mẫu. –