Sử dụng API tệp, nội dung web có thể yêu cầu người dùng chọn các tệp cục bộ và sau đó đọc nội dung của các tệp đó. Lựa chọn này có thể được thực hiện bằng cách sử dụng phần tử HTML
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
5 chứa
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6 đại diện cho các tệp do người dùng chọn
Thuộc tính
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
7 trên phần tử
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
8 cho phép người dùng chọn nhiều tệp
Truy cập tệp được chọn đầu tiên bằng bộ chọn DOM cổ điển
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
5 thông qua sự kiện
const numFiles = fileList.length;
0. Bạn cần sử dụng
const numFiles = fileList.length;
1 để thêm trình xử lý sự kiện
const numFiles = fileList.length;
0, như thế này
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
Đối tượng
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
5 do DOM cung cấp liệt kê tất cả các tệp được người dùng chọn, mỗi tệp được chỉ định là đối tượng
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6. Bạn có thể xác định có bao nhiêu tệp mà người dùng đã chọn bằng cách kiểm tra giá trị của thuộc tính
const numFiles = fileList.length;
5 của danh sách tệp
________số 8_______
Có thể truy xuất các đối tượng
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6 riêng lẻ bằng cách truy cập danh sách dưới dạng một mảng
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
Vòng lặp này lặp qua tất cả các tệp trong danh sách tệp
Có ba thuộc tính được cung cấp bởi đối tượng
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6 chứa thông tin hữu ích về tệp
const numFiles = fileList.length;
8
Tên tệp dưới dạng chuỗi chỉ đọc. Đây chỉ là tên tệp và không bao gồm bất kỳ thông tin đường dẫn nào
const numFiles = fileList.length;
9
Kích thước của tệp tính bằng byte dưới dạng số nguyên 64 bit chỉ đọc
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
0
Loại MIME của tệp dưới dạng chuỗi chỉ đọc hoặc
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
1 nếu không xác định được loại
Ví dụ sau đây cho thấy khả năng sử dụng thuộc tính
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
3 tệp xấu xí được thừa nhận và hiển thị giao diện của riêng bạn để mở bộ chọn tệp và hiển thị tệp hoặc tệp mà người dùng đã chọn. Bạn có thể thực hiện việc này bằng cách tạo kiểu cho phần tử đầu vào bằng
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
4 và gọi phương thức
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
5 trên phần tử
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
3
Hãy xem xét HTML này
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
Mã xử lý sự kiện
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
2. Ngoài ra, trong trường hợp này, bạn có thể tạo kiểu cho thành phần nhãn theo ý muốn. Bạn cần cung cấp một gợi ý trực quan về trạng thái tiêu điểm của trường nhập ẩn trên nhãn của nó, có thể là đường viền như minh họa ở trên hoặc màu nền hoặc bóng hộp. (Tại thời điểm viết bài này, Firefox không hiển thị gợi ý trực quan này cho các phần tử
Bạn cũng có thể cho phép người dùng kéo và thả tệp vào ứng dụng web của mình
Bước đầu tiên là thiết lập một khu vực thả. Chính xác phần nào trong nội dung của bạn sẽ chấp nhận sự sụt giảm có thể khác nhau tùy thuộc vào thiết kế của ứng dụng của bạn, nhưng việc tạo một phần tử nhận sự kiện giảm là dễ dàng
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
1 từ sự kiện, kéo danh sách tệp ra khỏi đó rồi chuyển trường đó tới
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
2. Kể từ thời điểm này, việc xử lý các tệp là như nhau cho dù người dùng sử dụng phần tử
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
8 hay kéo và thả
Giả sử bạn đang phát triển trang web chia sẻ ảnh tuyệt vời tiếp theo và muốn sử dụng HTML để hiển thị bản xem trước hình thu nhỏ của hình ảnh trước khi người dùng thực sự tải chúng lên. Bạn có thể thiết lập phần tử đầu vào hoặc vùng thả của mình như đã thảo luận trước đó và yêu cầu họ gọi một hàm, chẳng hạn như hàm
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
Ở đây, vòng lặp của chúng tôi xử lý các tệp do người dùng chọn sẽ xem xét thuộc tính
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
0 của từng tệp để xem liệu loại MIME của nó có bắt đầu bằng chuỗi "
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
6"). Đối với mỗi tệp là một hình ảnh, chúng tôi tạo một phần tử
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
7 mới. CSS có thể được sử dụng để thiết lập bất kỳ đường viền hoặc bóng đẹp nào và để chỉ định kích thước của hình ảnh, do đó không cần phải thực hiện ở đây
Mỗi hình ảnh có lớp CSS
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
8 được thêm vào, giúp dễ dàng tìm thấy trong cây DOM. Chúng tôi cũng thêm thuộc tính
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
9 vào mỗi hình ảnh chỉ định
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
5. Việc triển khai quy trình này của chúng tôi đặt thuộc tính
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
0 của phần tử
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
7 cho hình ảnh được tải, dẫn đến hình ảnh xuất hiện trong hình thu nhỏ trên màn hình của người dùng
Các phương thức DOM
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
1 và
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
2 cho phép bạn tạo các chuỗi URL đơn giản có thể được sử dụng để tham chiếu bất kỳ dữ liệu nào có thể được tham chiếu bằng cách sử dụng đối tượng DOM
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6, bao gồm các tệp cục bộ trên máy tính của người dùng
Khi bạn có một đối tượng
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6 mà bạn muốn tham chiếu bằng URL từ HTML, bạn có thể tạo một URL đối tượng cho nó như thế này
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6. Mỗi khi bạn gọi
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
1, một URL đối tượng duy nhất sẽ được tạo ngay cả khi bạn đã tạo một URL đối tượng cho tệp đó rồi. Mỗi trong số này phải được phát hành. Mặc dù chúng được giải phóng tự động khi tài liệu được tải xuống, nhưng nếu trang của bạn sử dụng chúng một cách linh hoạt, bạn nên giải phóng chúng một cách rõ ràng bằng cách gọi
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
Ví dụ này sử dụng URL đối tượng để hiển thị hình thu nhỏ của hình ảnh. Ngoài ra, nó còn hiển thị thông tin tệp khác bao gồm tên và kích thước của chúng
for(let i =0, numFiles = fileList.length; i < numFiles; i++){const file = fileList[i];// …}
3 của chúng tôi cũng như một liên kết gọi bộ chọn tệp (vì chúng tôi ẩn đầu vào tệp để ngăn giao diện người dùng kém hấp dẫn đó hiển thị). Điều này được giải thích trong phần, cũng như phương thức gọi bộ chọn tệp
Phương pháp
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
1. Đây là khối mà chúng tôi sẽ chèn danh sách tệp của mình, bao gồm cả hình thu nhỏ
Nếu đối tượng
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
5 được chuyển đến
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
4, chúng tôi đặt HTML bên trong của khối để hiển thị "Không có tệp nào được chọn. ". Mặt khác, chúng tôi bắt đầu xây dựng danh sách tệp của mình, như sau
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6 trong
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
Đặt nguồn của hình ảnh thành URL đối tượng mới đại diện cho tệp, sử dụng
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
1 để tạo URL blob
Đặt chiều cao của hình ảnh thành 60 pixel
Thiết lập trình xử lý sự kiện tải của hình ảnh để giải phóng URL đối tượng vì nó không còn cần thiết sau khi hình ảnh đã được tải. Điều này được thực hiện bằng cách gọi phương thức
<inputtype="file"id="fileElem"multipleaccept="image/*"class="visually-hidden"/><labelfor="fileElem">Select some files</label>
2 và chuyển vào chuỗi URL đối tượng như được chỉ định bởi
Một điều khác bạn có thể muốn làm là cho phép người dùng tải tệp hoặc tệp đã chọn (chẳng hạn như hình ảnh được chọn bằng ví dụ trước) lên máy chủ. Điều này có thể được thực hiện không đồng bộ rất dễ dàng
Tiếp tục với đoạn mã đã tạo hình thu nhỏ trong ví dụ trước, hãy nhớ lại rằng mọi hình ảnh thu nhỏ đều thuộc lớp CSS
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
8 với
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
6 tương ứng được đính kèm trong thuộc tính
<inputtype="file"id="fileElem"multipleaccept="image/*"style="display:none"/><buttonid="fileSelect"type="button">Select some files</button>
9. Điều này cho phép chúng tôi chọn tất cả các hình ảnh mà người dùng đã chọn để tải lên bằng cách sử dụng
18 của ________6____18 được đặt để cập nhật thông tin phần trăm mới cho thiết bị ghi hình để khi quá trình tải lên tiến triển, thiết bị ghi hình sẽ được cập nhật dựa trên thông tin mới nhất
20 được thiết lập để cập nhật thông tin tiến độ nhanh lên 100% nhằm đảm bảo chỉ báo tiến độ thực sự đạt 100% (trong trường hợp có vấn đề về mức độ chi tiết trong quá trình này). Sau đó, nó loại bỏ cái đập vì nó không còn cần thiết nữa. Điều này làm cho rung động biến mất sau khi quá trình tải lên hoàn tất
Yêu cầu tải lên tệp hình ảnh được mở bằng cách gọi phương thức
Ví dụ này, sử dụng PHP ở phía máy chủ và JavaScript ở phía máy khách, minh họa việc tải tệp lên không đồng bộ
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles,false);functionhandleFiles(){const fileList =this.files;/* now you can work with the file list */}
0
URL đối tượng có thể được sử dụng cho những thứ khác ngoài hình ảnh. Chúng có thể được sử dụng để hiển thị các tệp PDF được nhúng hoặc bất kỳ tài nguyên nào khác mà trình duyệt có thể hiển thị
Làm cách nào để lấy dữ liệu từ tệp JavaScript sang HTML?
Để bao gồm một tệp JavaScript bên ngoài, chúng ta có thể sử dụng thẻ script với thuộc tính src . Bạn đã sử dụng thuộc tính src khi sử dụng hình ảnh. Giá trị cho thuộc tính src phải là đường dẫn đến tệp JavaScript của bạn. Thẻ tập lệnh này phải được bao gồm giữa các thẻ
Làm cách nào để gọi hàm JavaScript trong HTML?
Để đưa tệp JavaScript của chúng ta vào tài liệu HTML, chúng ta phải sử dụng thẻ script