Hướng dẫn upload file javascript w3schools - tải lên tập tin javascript w3schools

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)
})
0

const 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)
})
2

fileUpload.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.

Hướng dẫn upload file javascript w3schools - tải lên tập tin javascript w3schools

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ừ đó.
Hướng dẫn upload file javascript w3schools - tải lên tập tin javascript w3schools

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");
0

Xử 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");
1

Phí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: https://blog.greenroots.info/10-useful-html-file-upload-tips-for-web-developers-ckgetegpf0c7go9s123wvg7bi