Làm cách nào để bạn tham chiếu các tệp cục bộ trong html?
As the applications we build with web technologies aspire to match up to native apps, one area where the browser remains challenged is in its access to files on the user's system. Browsers have, for many years, allowed users to select files to upload to a server in HTML form with . Show Nhưng nội dung của các tệp này luôn bị ẩn khỏi bất kỳ JavaScript nào đang chạy trong trình duyệt. Nếu chúng tôi muốn phát các tệp video hoặc chỉnh sửa hình ảnh trên hệ thống cục bộ của người dùng, trước tiên chúng tôi cần tải tệp lên máy chủ Nếu chúng tôi có thể đọc nội dung của các tệp này, chúng tôi có thể ít phụ thuộc vào chức năng phía máy chủ hơn. Rất may, với HTML5, giờ đây chúng ta có thể đọc các tệp từ hệ thống tệp cục bộ. Điều này có nghĩa là chúng tôi có thể tạo các ứng dụng hoạt động tốt hơn khi ngoại tuyến
Phần tử đầu vào HTML của type="file" cho phép người dùng chọn một hoặc nhiều tệp từ hệ thống tệp cục bộ. Trước HTML5, mục đích của đầu vào tệp chỉ là để cho phép người dùng chọn các tệp sẽ được tải lên thông qua một biểu mẫu. Trong HTML5, các phần tử đầu vào của loại = "tệp" hiện cung cấp cho nhà phát triển quyền truy cập vào siêu dữ liệu về các tệp đã chọn. tên tệp, ngày sửa đổi lần cuối và kích thước tệp tính bằng byte Nếu chúng tôi muốn người dùng có thể chọn nhiều tệp cùng một lúc, chúng tôi cần cung cấp cho đầu vào một thuộc tính nhiều. Sau đó, chúng tôi sẽ tạo một trình xử lý sự kiện thay đổi cho đầu vào tệp của chúng tôi (chúng tôi sẽ đặt ID tệpChooser này), được gọi khi giá trị của đầu vào tệp thay đổi
Khi người dùng chọn một tệp có đầu vào tệp, trình xử lý sự kiện của chúng tôi được gọi và nhận sự kiện làm đối số. Thuộc tính mục tiêu của sự kiện là tệp đầu vào. Điều này có một tệp thuộc tính, là một mảng giống như đối tượng FileList, chứa các đối tượng tệp được người dùng chọn. Ngay cả khi chúng tôi chưa đặt thuộc tính nhiều cho đầu vào của mình, thì thuộc tính tệp vẫn là Danh sách tệp, chỉ chứa một mục duy nhất Lấy dữ liệuBây giờ chúng ta có thể lặp lại FileList, làm việc lần lượt với từng tệp đã chọn và lấy tên, kích thước và ngày sửa đổi lần cuối của nó
Chúng ta có thể sử dụng chúng như thế nào? . Hoặc, trước khi tải lên, chúng tôi có thể xác định những tệp có thể mất nhiều thời gian để tải lên do kích thước của chúng và cảnh báo người dùng Tuy nhiên thông tin này vẫn còn khá hạn chế. May mắn thay, HTML5 cũng cung cấp cách đọc nội dung của tệp John Allsop sẽ thảo luận về tương lai của web tại Generate Sydney; . (mở trong tab mới)Đọc tập tinĐối tượng FileReader cho phép chúng tôi đọc nội dung của tệp sau khi chúng tôi nhận được tệp từ người dùng. Để bảo mật, người dùng phải chủ động cung cấp cho chúng tôi tham chiếu đến tệp để có thể đọc được. Có một số phương pháp FileReader để lấy nội dung của tệp
Vì JavaScript là một luồng và các tệp có thể có dung lượng lớn nên các phương thức đọc của FileReader không đồng bộ. Điều này cũng có nghĩa là nhiều tệp có thể được đọc đồng thời. Chúng tôi có thể dừng đọc tệp trong khi nó đang được xử lý bằng FileReader. Huỷ bỏ(). Vì các phương thức này không đồng bộ, thay vì đặt giá trị của một biến thành kết quả của phương thức, chúng ta cần lắng nghe các sự kiện được gửi đến đối tượng FileReader Bài viết này của Alex Feyerke là một trong những bài đầu tiên khám phá xu hướng dành cho các ứng dụng web ưu tiên ngoại tuyến. Nhấp qua để đọc(mở trong tab mới)Một trong những sự kiện mà FileReader nhận được tải khi tệp chúng tôi muốn đã được đọc. Thuộc tính mục tiêu của sự kiện này là chính FileReader – thuộc tính này có thuộc tính được gọi là kết quả, nơi chứa nội dung của tệp đã đọc. Đây là cách chúng tôi lấy dataURL cho nội dung của tệp
Chúng tôi thêm trình xử lý sự kiện cho sự kiện tải và trong trình xử lý cho sự kiện này, chúng tôi nhận được mục tiêu. kết quả, là giá trị của thao tác FileReader (vì vậy, DataURL, chuỗi hoặc arrayBuffer, tùy thuộc vào thao tác mà chúng tôi đã yêu cầu FileReader thực hiện) Chúng tôi có thể lắng nghe bất kỳ sự kiện nào sau đây trên đối tượng FileReader
Nếu đọc thành công, cả sự kiện tải và tải đều được kích hoạt. Nếu không thành công, các sự kiện lỗi và tải sẽ được kích hoạt Đặt nó lại với nhauChúng tôi sẽ cho phép người dùng chọn một tệp hình ảnh, sau đó hiển thị nó dưới dạng hình thu nhỏ. Đầu tiên, yếu tố đầu vào của chúng tôi
Khi người dùng thực hiện lựa chọn, chúng tôi gọi hàm showThumbNail(). Trong HTML5, chúng tôi có thể sử dụng accept='image/*' để chấp nhận bất kỳ loại hình ảnh nào. Mục tiêu của sự kiện là phần tử đầu vào có tệp thuộc tính (đối tượng giống như mảng được gọi là FileList). Chúng tôi lấy phần tử đầu tiên trong FileList và đọc nó
URL cho tệpThông thường, khi chúng tôi truy cập một tệp cục bộ, chúng tôi sẽ không thực sự muốn sử dụng nội dung của nó trực tiếp mà sử dụng tệp cho một số mục đích khác. Ví dụ: nếu đó là tệp hình ảnh, chúng tôi có thể muốn hiển thị hình ảnh; Một trường hợp cụ thể đang hiển thị luồng video trong phần tử video, khi làm việc với getUserMedia. Cách đơn giản nhất để thực hiện việc này là lấy một URL tạm thời, ẩn danh từ trình duyệt để sử dụng như bất kỳ URL nào khác – ví dụ như giá trị của thuộc tính src hình ảnh. Trong API tệp HTML5, đối tượng cửa sổ có thuộc tính URL. Cái này có hai phương pháp
Chúng tôi không thể lưu trữ một URL được tạo theo cách này trong localStorage, sau đó sử dụng lại nó trong một cửa sổ khác, vì nó chỉ tồn tại trong vòng đời của tài liệu trong khi cửa sổ tạo ra nó đang mở Đây là cách chúng tôi có thể sử dụng điều này, kết hợp với đầu vào của loại tệp để lấy hình ảnh từ hệ thống tệp cục bộ và hiển thị dưới dạng hình thu nhỏ. Yếu tố đầu vào chính xác như trước
Đã được thực hiện. Không cần phải lo lắng về các chức năng đọc hoặc gọi lại tệp không đồng bộ. Khi chúng tôi chỉ muốn sử dụng một tệp và không đọc nội dung của nó, thì đây là giải pháp ưa thích cho đến nay kết thúcAPI tệp đưa trình duyệt đến gần hơn với hệ thống tệp gốc, cho phép người dùng phát, xem và chỉnh sửa nội dung từ hệ thống cục bộ của họ trực tiếp trong trình duyệt mà không cần gửi chúng đến máy chủ Nó thậm chí còn cho phép chúng tôi truy cập vào máy ảnh và chụp ảnh bằng cách sử dụng chụp=máy ảnh như một phần của giá trị thuộc tính loại. Tuy nhiên, chúng tôi vẫn sẽ đợi một thời gian (rất có thể là mãi mãi) để có toàn quyền truy cập vào hệ thống tệp gốc Tệp cục bộ HTML là gì?'Cục bộ' có nghĩa là khi mở tệp html trực tiếp từ hệ thống tệp cục bộ trong trình duyệt . Trong thanh địa chỉ của trình duyệt, các tệp cục bộ có thể được xác định bằng tệp của chúng. // url.
Làm cách nào để hiển thị hình ảnh từ thư mục trong HTML?Trong HTML, thẻ . Đường dẫn ảnh được chỉ định bởi thuộc tính src của thẻ
Cách lấy đường dẫn hình ảnh cục bộ trong javascript?div = $(''); img = $(' |