24 là thuộc tính chỉ đọc có chứa một chuỗi chỉ định đường dẫn của tệp liên quan đến thư mục được người dùng chọn trong phần tử
25 với tập thuộc tính
26 của nóGiá trị
Một chuỗi chứa đường dẫn của tệp liên quan đến thư mục tổ tiên mà người dùng đã chọn
Thí dụ
Trong ví dụ này, một bộ chọn thư mục được trình bày cho phép người dùng chọn một hoặc nhiều thư mục. Khi sự kiện
27 xảy ra, danh sách tất cả các tệp có trong hệ thống phân cấp thư mục đã chọn sẽ được tạo và hiển thị Phần tử
4 với
5 cho phép người dùng chọn một hoặc nhiều tệp từ bộ lưu trữ thiết bị của họ. Sau khi được chọn, các tệp có thể được tải lên máy chủ bằng cách gửi biểu mẫu hoặc được thao tác bằng mã JavaScript và API tệpThử nó
Giá trịMột chuỗi đại diện cho đường dẫn đến tệp đã chọn. Sự kiện
6 và
7Các thuộc tính chung được hỗ trợ
8Các thuộc tính bổ sung
9,
Choose file to upload
Submit
0,
Choose file to upload
Submit
1Các thuộc tính IDL
Choose file to upload
Submit
2 và
Choose file to upload
Submit
3Giao diện DOM
Choose file to upload
Submit
4Phương pháp
Choose file to upload
Submit
5Giá trị
Thuộc tính
Choose file to upload
Submit
3 của đầu vào tệp chứa một chuỗi đại diện cho đường dẫn đến [các] tệp đã chọn. If no file is selected yet, the value is an empty string [
Choose file to upload
Submit
7]. Khi người dùng chọn nhiều tệp,
Choose file to upload
Submit
3 đại diện cho tệp đầu tiên trong danh sách các tệp họ đã chọn. Các tệp khác có thể được xác định bằng thuộc tính
Choose file to upload
Submit
9 của đầu vàoGhi chú. Giá trị luôn là tên của tệp có tiền tố là
60, đây không phải là đường dẫn thực của tệp. Điều này là để ngăn phần mềm độc hại đoán cấu trúc tệp của người dùngthuộc tính bổ sung
Ngoài các thuộc tính chung được chia sẻ bởi tất cả các phần tử
4, các đầu vào loại
62 cũng hỗ trợ các thuộc tính sauChấp nhận
Giá trị thuộc tính
9 là một chuỗi xác định loại tệp mà đầu vào tệp sẽ chấp nhận. Chuỗi này là danh sách các trình xác định loại tệp duy nhất được phân tách bằng dấu phẩy. Bởi vì một loại tệp nhất định có thể được xác định theo nhiều cách, nên sẽ rất hữu ích khi cung cấp một bộ chỉ định loại kỹ lưỡng khi bạn cần các tệp có định dạng nhất địnhChẳng hạn, có một số cách để xác định tệp Microsoft Word, vì vậy một trang web chấp nhận tệp Word có thể sử dụng một
4 như thế này
1chiếm lấy
Giá trị thuộc tính
Choose file to upload
Submit
0 là một chuỗi chỉ định máy ảnh nào sẽ được sử dụng để chụp dữ liệu hình ảnh hoặc video, nếu thuộc tính
9 cho biết rằng đầu vào phải thuộc một trong các loại đó. Giá trị của
67 cho biết nên sử dụng máy ảnh và/hoặc micrô hướng về phía người dùng. Giá trị của
68 chỉ định rằng nên sử dụng camera và/hoặc micrô hướng ra ngoài. Nếu thuộc tính này bị thiếu, tác nhân người dùng có thể tự quyết định phải làm gì. Nếu chế độ đối mặt được yêu cầu không khả dụng, tác nhân người dùng có thể quay lại chế độ mặc định ưa thích của nóGhi chú.
Choose file to upload
Submit
0 trước đây là một thuộc tính Boolean, nếu có, yêu cầu sử dụng [các] thiết bị thu phương tiện của thiết bị như máy ảnh hoặc micrô thay vì yêu cầu đầu vào tệpnhiều
Khi thuộc tính Boolean
Choose file to upload
Submit
1 được chỉ định, đầu vào tệp cho phép người dùng chọn nhiều tệpThuộc tính không chuẩn
Ngoài các thuộc tính được liệt kê ở trên, các thuộc tính không chuẩn sau đây có sẵn trên một số trình duyệt. Bạn nên cố gắng tránh sử dụng chúng khi có thể, vì làm như vậy sẽ hạn chế khả năng mã của bạn hoạt động trong các trình duyệt không triển khai chúng
81
Thuộc tính Boolean
81, nếu có, cho biết rằng người dùng chỉ có thể chọn các thư mục trong giao diện bộ chọn tệp. Xem
83 để biết thêm chi tiết và ví dụMặc dù ban đầu chỉ được triển khai cho các trình duyệt dựa trên WebKit, nhưng
81 cũng có thể sử dụng được trong Microsoft Edge cũng như Firefox 50 trở lên. Tuy nhiên, mặc dù nó có hỗ trợ tương đối rộng, nhưng nó vẫn không phải là tiêu chuẩn và không nên được sử dụng trừ khi bạn không có giải pháp thay thế nàoTrình xác định loại tệp duy nhất
Trình xác định loại tệp duy nhất là một chuỗi mô tả loại tệp có thể được người dùng chọn trong phần tử
4 thuộc loại
62. Mỗi trình xác định loại tệp duy nhất có thể có một trong các dạng sau- Phần mở rộng tên tệp phân biệt chữ hoa chữ thường hợp lệ, bắt đầu bằng dấu chấm [". "] tính cách. Ví dụ.
87,
88 hoặc
89 - Chuỗi loại MIME hợp lệ, không có phần mở rộng
- Chuỗi
60 có nghĩa là "bất kỳ tệp âm thanh nào" - Chuỗi
61 có nghĩa là "bất kỳ tệp video nào" - Chuỗi
62 có nghĩa là "bất kỳ tệp hình ảnh nào"
Thuộc tính
9 lấy một chuỗi chứa một hoặc nhiều chỉ định loại tệp duy nhất này làm giá trị của nó, được phân tách bằng dấu phẩy. Ví dụ: bộ chọn tệp cần nội dung có thể được hiển thị dưới dạng hình ảnh, bao gồm cả định dạng hình ảnh tiêu chuẩn và tệp PDF, có thể trông như thế này
Sử dụng đầu vào tập tin
Một ví dụ cơ bản
Choose file to upload
Submit
6Điều này tạo ra đầu ra sau
Ghi chú. Bạn cũng có thể tìm thấy ví dụ này trên GitHub — xem mã nguồn và xem nó đang chạy trực tiếp
Bất kể thiết bị hoặc hệ điều hành của người dùng, đầu vào tệp cung cấp một nút mở hộp thoại chọn tệp cho phép người dùng chọn tệp
Bao gồm thuộc tính
Choose file to upload
Submit
1, như được hiển thị ở trên, chỉ định rằng có thể chọn nhiều tệp cùng một lúc. Người dùng có thể chọn nhiều tệp từ bộ chọn tệp theo bất kỳ cách nào mà nền tảng đã chọn của họ cho phép [e. g. bằng cách giữ phím Shift hoặc Control, rồi bấm]. Nếu bạn chỉ muốn người dùng chọn một tệp duy nhất cho mỗi
4, hãy bỏ qua thuộc tính
Choose file to upload
Submit
1Nhận thông tin về các tệp đã chọn
Các tệp đã chọn' được trả về bởi thuộc tính
Choose file to upload
Submit
9 của phần tử, là đối tượng
68 chứa danh sách các đối tượng
69.
68 hoạt động giống như một mảng, vì vậy bạn có thể kiểm tra thuộc tính
11 của nó để biết số lượng tệp đã chọnMỗi đối tượng
69 chứa thông tin sau
13tên tập tin
14Một số chỉ định ngày và giờ mà tệp được sửa đổi lần cuối, tính bằng mili giây kể từ kỷ nguyên UNIX [ngày 1 tháng 1 năm 1970 lúc nửa đêm]
15 Không dùng nữaĐối tượng
16 đại diện cho ngày và giờ mà tệp được sửa đổi lần cuối. Điều này không được chấp nhận và không nên được sử dụng. Sử dụng
14 thay thế
18Kích thước của tệp tính bằng byte
19Loại MIME của tệp
Choose file to upload
Submit
00 Không chuẩnMột chuỗi chỉ định đường dẫn của tệp liên quan đến thư mục cơ sở được chọn trong bộ chọn thư mục [nghĩa là bộ chọn
62 trong đó thuộc tính
81 được đặt]. Điều này là không chuẩn và nên được sử dụng một cách thận trọngGhi chú. Bạn có thể đặt cũng như nhận giá trị của
Choose file to upload
Submit
9 trong tất cả các trình duyệt hiện đại; Giới hạn các loại tệp được chấp nhận
Thường thì bạn sẽ không muốn người dùng có thể chọn bất kỳ loại tệp tùy ý nào; . Ví dụ: nếu đầu vào tệp của bạn cho phép người dùng tải lên ảnh hồ sơ, bạn có thể muốn họ chọn các định dạng hình ảnh tương thích với web, chẳng hạn như JPEG hoặc PNG
Các loại tệp được chấp nhận có thể được chỉ định bằng thuộc tính
9, thuộc tính này có danh sách các phần mở rộng tệp được phép hoặc loại MIME được phân tách bằng dấu phẩy. Vài ví dụ
05 hoặcChoose file to upload Submit
06 — Chấp nhận tệp PNGChoose file to upload Submit
07 hoặcChoose file to upload Submit
08 — Chấp nhận tệp PNG hoặc JPEGChoose file to upload Submit
09 — Chấp nhận bất kỳ tệp nào có loại MIMEChoose file to upload Submit
62. [Nhiều thiết bị di động cũng cho phép người dùng chụp ảnh bằng camera khi sử dụng tính năng này. ]
11 — chấp nhận bất cứ thứ gì có mùi như tài liệu MS WordChoose file to upload Submit
Hãy xem xét một ví dụ đầy đủ hơn
8
6Điều này tạo ra một đầu ra trông tương tự như ví dụ trước
Ghi chú. Bạn cũng có thể tìm thấy ví dụ này trên GitHub — xem mã nguồn và xem nó đang chạy trực tiếp
Nó có thể trông giống nhau, nhưng nếu bạn thử chọn một tệp có đầu vào này, bạn sẽ thấy rằng bộ chọn tệp chỉ cho phép bạn chọn các loại tệp được chỉ định trong giá trị
9 [giao diện chính xác khác nhau giữa các trình duyệt và hệ điều hành]Thuộc tính
9 không xác thực loại tệp đã chọn; . Người dùng vẫn có thể [trong hầu hết các trường hợp] chuyển đổi một tùy chọn trong trình chọn tệp để có thể ghi đè tùy chọn này và chọn bất kỳ tệp nào họ muốn, sau đó chọn loại tệp không chính xácDo đó, bạn nên đảm bảo rằng thuộc tính
9 được sao lưu bằng xác thực phía máy chủ phù hợpghi chú
- Bạn không thể đặt giá trị của bộ chọn tệp từ tập lệnh — thực hiện thao tác như sau không có tác dụng
1 - Khi một tệp được chọn bằng cách sử dụng
15, đường dẫn thực tới tệp nguồn không được hiển thị trong thuộc tínhChoose file to upload Submit
3 của đầu vào vì lý do bảo mật rõ ràng. Thay vào đó, tên tệp được hiển thị, với _____160 được thêm vào trước nó. Có một số lý do lịch sử cho điều này, nhưng nó được hỗ trợ trên tất cả các trình duyệt hiện đại và trên thực tế được xác định trong thông số kỹ thuậtChoose file to upload Submit
ví dụ
Trong ví dụ này, chúng tôi sẽ trình bày một trình chọn tệp nâng cao hơn một chút, tận dụng thông tin tệp có sẵn trong thuộc tính
Choose file to upload
Submit
9, cũng như trình bày một vài thủ thuật thông minhGhi chú. Bạn có thể xem mã nguồn hoàn chỉnh cho ví dụ này trên GitHub — file-example. html [cũng xem trực tiếp]. Chúng tôi sẽ không giải thích về CSS;
Trước hết, hãy xem HTML
Choose file to upload
Submit
0
Choose file to upload
Submit
1Điều này tương tự như những gì chúng ta đã thấy trước đây — không có gì đặc biệt để bình luận
Tiếp theo, hãy xem qua JavaScript
Trong những dòng đầu tiên của tập lệnh, chúng tôi nhận được các tham chiếu đến chính biểu mẫu đầu vào và phần tử
Choose file to upload
Submit
19 với lớp
Choose file to upload
Submit
50. Tiếp theo, chúng tôi ẩn phần tử
4 — chúng tôi làm điều này vì đầu vào tệp có xu hướng xấu, khó tạo kiểu và không nhất quán trong thiết kế của chúng trên các trình duyệt. Bạn có thể kích hoạt phần tử
7 bằng cách nhấp vào phần tử
Choose file to upload
Submit
53 của nó, vì vậy tốt hơn là ẩn phần tử
7 một cách trực quan và tạo kiểu cho nhãn giống như một nút, để người dùng biết cách tương tác với phần tử đó nếu họ muốn tải tệp lên
Choose file to upload
Submit
5Ghi chú.
Choose file to upload
Submit
55 được sử dụng để ẩn đầu vào tệp thay vì
Choose file to upload
Submit
56 hoặc
Choose file to upload
Submit
57, vì công nghệ hỗ trợ diễn giải hai kiểu sau có nghĩa là đầu vào tệp không tương tácTiếp theo, chúng tôi thêm một trình lắng nghe sự kiện vào đầu vào để lắng nghe các thay đổi đối với giá trị đã chọn của nó [trong trường hợp này là khi các tệp được chọn]. Trình lắng nghe sự kiện gọi hàm
Choose file to upload
Submit
58 tùy chỉnh của chúng tôi
0Bất cứ khi nào hàm
Choose file to upload
Submit
58 được gọi, chúng ta- Sử dụng vòng lặp
00 để làm trống nội dung trước đó của bản xem trước
19Choose file to upload Submit
- Lấy đối tượng
68 chứa thông tin về tất cả các tệp đã chọn và lưu trữ nó trong một biến có tên là
03 - Kiểm tra xem có tệp nào được chọn không, bằng cách kiểm tra xem
04 có bằng 0 không. Nếu vậy, hãy in một thông báo vào bản xem trước
19 nói rằng không có tệp nào được chọnChoose file to upload Submit
- Nếu các tệp đã được chọn, chúng tôi lặp qua từng tệp, in thông tin về tệp đó vào bản xem trước
19. Những điều cần lưu ý ở đâyChoose file to upload Submit
- Chúng tôi sử dụng chức năng tùy chỉnh
07 để kiểm tra xem tệp có đúng loại không [e. g. các loại hình ảnh được chỉ định trong thuộc tính
9] - Nếu có, chúng tôi
- In ra tên và kích thước tệp của nó vào một mục danh sách bên trong
19 trước đó [lấy từChoose file to upload Submit
10 và
11]. Hàm
12 tùy chỉnh trả về một phiên bản được định dạng độc đáo của kích thước tính bằng byte/KB/MB [theo mặc định, trình duyệt báo cáo kích thước theo byte tuyệt đối] - Tạo bản xem trước hình thu nhỏ của hình ảnh bằng cách gọi
13. Sau đó, chèn cả hình ảnh vào mục danh sách bằng cách tạo một
14 mới và đặt
15 của nó thành hình thu nhỏ
- In ra tên và kích thước tệp của nó vào một mục danh sách bên trong
- Nếu loại tệp không hợp lệ, chúng tôi sẽ hiển thị thông báo bên trong mục danh sách cho người dùng biết rằng họ cần chọn loại tệp khác
1Hàm tùy chỉnh
07 lấy một đối tượng
69 làm tham số, sau đó sử dụng
18 để kiểm tra xem có bất kỳ giá trị nào trong
19 khớp với thuộc tính
19 của tệp không. Nếu tìm thấy khớp, hàm trả về
21. Nếu không tìm thấy kết quả khớp, nó sẽ trả về
22
2Hàm
12 lấy một số [byte, được lấy từ thuộc tính
18 của tệp hiện tại] và biến nó thành một kích thước được định dạng độc đáo theo byte/KB/MB