W3Schools được tối ưu hóa cho việc học và đào tạo. Ví dụ có thể được đơn giản hóa để cải thiện việc đọc và học tập. Hướng dẫn, tài liệu tham khảo và ví dụ được xem xét liên tục để tránh lỗi, nhưng chúng tôi không thể đảm bảo tính chính xác đầy đủ của tất cả các nội dung. Trong khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng, cookie và chính sách bảo mật của chúng tôi.
Bản quyền 1999-2022 bởi dữ liệu refsnes. Đã đăng ký Bản quyền. W3Schools được cung cấp bởi W3.CSS.
W3Schools is Powered by W3.CSS.
Các mô -đun đáng gờm
Có một mô -đun rất tốt để làm việc với các tải lên tệp, được gọi là "ghê gớm".
Mô -đun đáng gờm có thể được tải xuống và cài đặt bằng NPM:
C: \ user \ tên của bạn> cài đặt npm
Sau khi bạn đã tải xuống mô -đun đáng gờm, bạn có thể đưa mô -đun vào bất kỳ ứng dụng nào:
var Ổn quyết = yêu cầu ['ghê gớm'];
Tải lên tệp
Bây giờ bạn đã sẵn sàng để tạo một trang web trong node.js cho phép người dùng tải lên các tệp lên máy tính của bạn:
Bước 1: Tạo biểu mẫu tải lên
Tạo tệp Node.js ghi biểu mẫu HTML, với trường tải lên:
Thí dụ
Mã này sẽ tạo ra một biểu mẫu HTML:
var http = yêu cầu ['http'];
http.createserver [function [req, res] {& nbsp; res.writehead [200, {'content-type': 'text/html'}]; & nbsp; res.write ['']; & nbsp; res.write [ '']; & nbsp; res.write ['']; & nbsp; res.write ['']; & nbsp; return res.end [];}].
res.writeHead[200, {'Content-Type': 'text/html'}];
res.write[''];
res.write['
'];
res.write[''];
res.write[''];
return res.end[];
}].listen[8080];
Bước 2: Phân tích tệp đã tải lên
Bao gồm mô -đun đáng gờm để có thể phân tích tệp đã tải lên khi nó đến máy chủ.
Khi tệp được tải lên và phân tích cú pháp, nó sẽ được đặt trên một thư mục tạm thời trên máy tính của bạn.
Thí dụ
Mã này sẽ tạo ra một biểu mẫu HTML:
var http = yêu cầu ['http'];
var formidable = require['formidable'];
http.createServer[function [req, res] {
if [req.url == '/fileupload'] {
var form = new formidable.IncomingForm[];
form.parse[req, function [err, fields, files] {
res.write['File uploaded'];
res.end[];
}];
} else {
res.writeHead[200, {'Content-Type': 'text/html'}];
res.write[''];
res.write['
'];
res.write[''];
res.write[''];
return res.end[];
}
}].listen[8080];
http.createserver [function [req, res] {& nbsp; res.writehead [200, {'content-type': 'text/html'}]; & nbsp; res.write ['']; & nbsp; res.write [ '']; & nbsp; res.write ['']; & nbsp; res.write ['']; & nbsp; return res.end [];}].
Bước 2: Phân tích tệp đã tải lên
Bao gồm mô -đun đáng gờm để có thể phân tích tệp đã tải lên khi nó đến máy chủ.
Khi tệp được tải lên và phân tích cú pháp, nó sẽ được đặt trên một thư mục tạm thời trên máy tính của bạn.
Thí dụ
Mã này sẽ tạo ra một biểu mẫu HTML:
var http = yêu cầu ['http'];
var formidable =
require['formidable'];
var fs = require['fs'];
http.createServer[function [req, res] {
if [req.url == '/fileupload'] {
var form = new formidable.IncomingForm[];
form.parse[req, function [err, fields, files] {
var oldpath = files.filetoupload.filepath;
var newpath = 'C:/Users/Your Name/' + files.filetoupload.originalFilename;
fs.rename[oldpath, newpath, function [err] {
if [err] throw err;
res.write['File uploaded and moved!'];
res.end[];
}];
}];
} else {
res.writeHead[200, {'Content-Type': 'text/html'}];
res.write[''];
res.write['
'];
res.write[''];
res.write[''];
return res.end[];
}
}].listen[8080];
Khả năng Upload file là một tính năng được yêu cầu cho một số trang web và ứng dụng phổ biến hiện nay. Từ việc Upload hình ảnh trên mảng xã hội cho avatar hay resume, lưu các file .pdf, .docx. Hầu như đã xuất hiện ở mọi nơi.Upload file là một tính năng được yêu cầu cho một số trang web và ứng dụng phổ biến hiện nay. Từ việc Upload hình ảnh trên mảng xã hội cho avatar hay resume, lưu các file .pdf, .docx. Hầu như đã xuất hiện ở mọi nơi.
Là một lập trình viên web, chúng ta nên biết HTML hỗ trợ tính năng này cùng với một chút JavaScript để xử lý. Với HTML5, thì tính năng Upload File [File API] đã thêm vào
const fileUpload = document.querySelector["#file-upload"];
3. Để sử dụng, chúng ta cần đọc const fileUpload = document.querySelector["#file-upload"];
4 và Đối tượng File. Giải quyết được nhiều vấn đề về multiples files upload, ...v.v.HTML hỗ trợ tính năng này cùng với một chút JavaScript để xử lý. Với HTML5, thì tính năng Upload File
[File API] đã thêm vào const fileUpload = document.querySelector["#file-upload"];
3. Để sử dụng, chúng ta cần đọc const fileUpload = document.querySelector["#file-upload"];
4 và Đối tượng File. Giải quyết được nhiều vấn đề về multiples files upload, ...v.v.Single File Upload
Thông thường, chúng ta chỉ cần điền
const fileUpload = document.querySelector["#file-upload"];
5 cho thẻ const fileUpload = document.querySelector["#file-upload"];
6 trong trường hợp muốn đăng tải tệp cho ứng dụng web.
Khi bật trạng thái upload file trên thẻ input với
const fileUpload = document.querySelector["#file-upload"];
7 người dùng sẽ được phép đăng tải một hoặc nhiều tệp. Mặc định, nó sẽ cho phép bạn upload một tập tin sử dụng hệ thống native của browser.upload file trên thẻ input với const fileUpload = document.querySelector["#file-upload"];
7 người dùng sẽ được phép đăng tải một hoặc nhiều
tệp. Mặc định, nó sẽ cho phép bạn upload một tập tin sử dụng hệ thống native của browser.Khi tải lên thành công,
const fileUpload = document.querySelector["#file-upload"];
8 cho phép bạn đọc các thông tin của File dưới dạng Object thông qua JavaScript. Để xem được các thông tin từ đối tượng File, chúng ta cần lắng nghe chúng bằng sự kiện const fileUpload = document.querySelector["#file-upload"];
9 của file upload.File dưới dạng Object thông qua JavaScript. Để xem được các thông tin từ đối tượng File, chúng ta cần lắng nghe chúng bằng sự kiện const fileUpload = document.querySelector["#file-upload"];
9 của file upload.Đầu tiên, truy vấn đối tượng thông qua
fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
0const fileUpload = document.querySelector["#file-upload"];
Sau đó, thêm sự kiện
const fileUpload = document.querySelector["#file-upload"];
9 để đọc thông tin của đối tượng file khi quá trình upload hoàn thành. Chúng ta sẽ lấy thông tin của tập tin từ fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
2file khi quá trình upload hoàn thành. Chúng ta sẽ lấy thông tin của tập tin từ fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
2fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
Chú ý, Mảng FileList với đối tượng File có tất cả thông tin [metadata] về file được tải lên. FileList với đối tượng File có tất cả thông tin [metadata] về file được tải lên.
Multiple Files Upload
Chúng ta có thể tải nhiều tệp cùng lúc. Để làm điều đó, chúng ta cần thêm một thuộc tính vào thẻ input là
fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
3.
Bây giờ, Browser sẽ cho bạn tải 1 hoặc hiều files cùng lúc. Giống như ví dụ trước, chúng ta có vẫn sử dụng sự kiện
const fileUpload = document.querySelector["#file-upload"];
9 để lắng nghe trạng thái và lấy thông tin đăng tải tập tin. Bạn có để ý không, const fileUpload = document.querySelector["#file-upload"];
4 là một mảng, dành cho multiple và bạn có thể lấy thông tin tệp từ đó. Browser sẽ cho bạn tải 1 hoặc hiều files cùng lúc. Giống như ví dụ trước, chúng ta có vẫn sử dụng sự kiện const fileUpload = document.querySelector["#file-upload"];
9 để lắng nghe trạng thái và lấy thông tin đăng tải tập tin. Bạn có để ý không, const fileUpload = document.querySelector["#file-upload"];
4 là một mảng, dành cho multiple và bạn có thể lấy thông tin tệp từ đó.
Tìm hiểu về metadata file
Bất cứ khi nào chúng ta đăng tải tập tin, đối tượng file đều có metadata chứ thông tin giống như name, size ,last update time, type, etc. Đây là những thông tin hữu ích để bạn kiểm soát và cần thiết có thể hiển thị cho người dùng.file đều có metadata chứ thông tin giống như name, size ,last update time, type, etc. Đây là những thông tin hữu ích để bạn kiểm soát và cần thiết có thể hiển thị cho người dùng.
const fileUpload = document.querySelector["#file-upload"];
fileUpload.addEventListener["change", [e] => {
const files = e.target.files;
for[const file of files] {
const {name, type, size, lastModified } = file;
// Làm gì đó với các thông tin trên
console.log[file]
}
}]
Tìm hiểu về thuộc tính accept trên file
Chúng ta có thẻ sử dụng thuộc tính accept trên input thuộc type=file để giới hạn, cho phép hoặc từ chối các loại tập tin đăng tải từ phía người dùng. Có thể bạn chỉ muốn cho phép người dùng tải tệp hình ảnh thuộc định dạng
fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
6, fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
7. Bạn có thể sử dụng thuộc tính nàyaccept trên input thuộc type=file để giới hạn, cho phép hoặc từ chối các loại tập tin đăng tải từ phía người dùng. Có thể bạn chỉ muốn cho phép người dùng tải tệp hình ảnh thuộc định dạng fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
6, fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
7. Bạn có thể sử dụng thuộc tính này
Quản lý nội dung của tập tin file
Bạn có thể sẽ muốn hiển thị nội dung hình ảnh vừa đăng tải với mục đích muốn người dùng, người sử dụng biết rõ họ vừa đăng tải đối tượng gì lên.
Chúng ta có thể sử dụng FileReader để chuyển đổi tập tin file sang dạng chuỗi binary. Chúng ta sẽ sử dụng sự kiện
fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
8 để lắng nghe và lấy chuỗi binary của tập tin vừa đăng tải.FileReader để chuyển đổi tập tin file sang dạng chuỗi binary. Chúng ta sẽ sử dụng sự kiện fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
8 để lắng nghe và lấy chuỗi binary của tập tin vừa đăng tải.- Tìm hiểu thêm về FileReader
// Khởi tạo đối tượng FileReader
const reader = new FileReader[];
// Lắng nghe trạng thái đăng tải tệp
fileUpload.addEventListener["change", [event] => {
// Lấy thông tin tập tin được đăng tải
const files = event.target.files;
// Đọc thông tin tập tin đã được đăng tải
reader.readAsDataURL[files[0]]
// Lắng nghe quá trình đọc tập tin hoàn thành
reader.addEventListener["load", [event] => {
// Lấy chuỗi Binary thông tin hình ảnh
const img = event.target.result;
// Thực hiện hành động gì đó, có thể append chuỗi giá trị này vào thẻ IMG
console.log[img] // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAA........
}]
}]
Kiểm soát kích cỡ tập tin [tệp] đăng tải
Như chúng ta đã thấy, có thể đọc được thông tin của tập tin thông qua metadata của chúng. Như vậy, chúng ta có cơ sỡ để kiểm soát, cho phép hoặc từ chối tập tin được đăng tải từ phía máy khách, điều này cũng giúp bạn giảm tải trọng cho Server.Server.
fileUpload.addEventListener["change", [event] => {
const files = event.target.files;
const getSizeImage = files[0].size;
if[size > 1024 * 1024] alert["Chỉ cho phép tải tệp tin nhỏ hơn 1MB"];
else alert["Đăng tải tệp thành công"];
}]
Hiển thị quá trình đăng tải tệp
Thông thường khi sử dụng, chúng ta sẽ cần hiển thị thông tin về quá trình đăng tải tệp, để người sử dụng nắm rõ. Chúng ta sẽ sử dụng FileReader[] như lần trước để kiểm soát quá trình này.FileReader[] như lần trước để kiểm soát quá trình này.
const reader = new FileReader[];
Ngoài sự kiện
fileUpload.addEventListener["change", [event] => {
const { files } = event.target;
console.log["files", files]
}]
9, để lắng nghe quy trình tải tập tin, chúng ta sẽ sử dụng sự kiện
0.reader.addEventListener["progress", [event] => {
const {loaded, total} = event;
if[loaded && total] {
const percent = Math.round[loaded / total] * 100;
document.querySelector["progress"].value = percent
}
}]
Upload directory
Ngoài việc đăng tải tập tin, bạn cũng có quyền đăng tải cả thư mục. Wellll, nó rất khả thi nhưng có một số giới hạn, có thể với hiện tại điều này không còn đáng kể.
- Tìm hiểu thêm về thuộc tính này: webkitdirectory
Rất dễ dàng để sử dụng tính năng này, như bên dưới chỉ cần thêm thuộc tính webkitdirectory
const fileUpload = document.querySelector["#file-upload"];
0Xử lý đường dẫn file upload
Thông thường khi bạn đăng tải tệp và lấy đường dẫn hình ảnh sẽ có dạng data:image/base64 vô cùng dài. Bạn có thể xử lý đường dẫn ngắn gọn bằng cách sử dụng URL.createObjectURL[] để tạo ra đường dẫn unique cho tập tin được đăng tải. Bạn cũng có thể loại bỏ nó bằng phương thức URL.revokeObjectURL[]
Rất đơn giản, chúng ta chỉ cần lấy thông tin tệp vừa đọc và đặt vào bên trong createObjectURL[here]createObjectURL[here]
const fileUpload = document.querySelector["#file-upload"];
1Phía trên là các trường hợp thường gặp trong quá trình xử lý tập tin được đăng tải từ máy khách. Có thể nó sẽ giúp ích cho bạn trong thời gian tới.
Có thể bạn sẽ cần
- Mình đã tham khảo qua các bài viết: //blog.greenroots.info/10-useful-html-file-upload-tips-for-web-developers-ckgetegpf0c7go9s123wvg7bi