Hướng dẫn how to restrict file upload type in javascript? - làm thế nào để hạn chế loại tải lên tệp trong javascript?

Nói đúng ra, câu trả lời là không. Nhà phát triển không thể ngăn người dùng tải lên các tệp thuộc bất kỳ loại hoặc tiện ích mở rộng nào.no. A developer cannot prevent a user from uploading files of any type or extension.

Tuy nhiên, thuộc tính chấp nhận của


 
8 có thể giúp cung cấp bộ lọc trong hộp thoại Chọn tệp được cung cấp bởi trình duyệt/hệ điều hành của người dùng. Ví dụ,accept attribute of

 
8 can help to provide a filter in the file select dialog box provided by the user's browser/OS. For example,

 

nên cung cấp một cách để lọc ra các tệp khác với .xls hoặc .xlsx. Mặc dù trang MDN cho phần tử


 
9 luôn nói rằng nó hỗ trợ điều này, nhưng thật ngạc nhiên, điều này không hiệu quả với tôi trong Firefox cho đến phiên bản 42. Điều này hoạt động ở IE 10+, Edge và Chrome.

Vì vậy, để hỗ trợ Firefox cũ hơn 42 cùng với IE 10+, Edge, Chrome và Opera, tôi đoán tốt hơn là sử dụng danh sách các loại MIME được phân tách bằng dấu phẩy:


 

[Edge (EdgeHTML) Hành vi: Dropdown bộ lọc loại tệp hiển thị các loại tệp được đề cập ở đây, nhưng không phải là mặc định trong danh sách thả xuống. Bộ lọc mặc định là

  
  
  
0.]Edge (EdgeHTML) behavior: The file type filter dropdown shows the file types mentioned here, but is not the default in the dropdown. The default filter is
  
  
  
0.]

Bạn cũng có thể sử dụng dấu hoa thị trong các loại MIME. Ví dụ:

  
  
  

W3C khuyến nghị các tác giả chỉ định cả loại MIME và các tiện ích mở rộng tương ứng của chúng trong thuộc tính

  
  
  
1. Vì vậy, cách tiếp cận tốt nhất là:recommends authors to specify both MIME-types and their corresponding extensions in the
  
  
  
1 attribute. So, the best approach is:



 

JSfiddle giống nhau: ở đây.

Tham khảo: Danh sách các loại mime List of MIME-types

Quan trọng: Sử dụng thuộc tính

  
  
  
1 chỉ cung cấp một cách lọc trong các tệp các loại được quan tâm. Các trình duyệt vẫn cho phép người dùng chọn các tệp thuộc bất kỳ loại nào. Kiểm tra bổ sung (phía máy khách) nên được thực hiện (sử dụng JavaScript, một cách sẽ là thế này) và chắc chắn các loại tệp phải được xác minh trên máy chủ, sử dụng kết hợp loại MIME bằng cả phần mở rộng tệp và chữ ký nhị phân của nó (ASP .NET, PHP, Ruby, Java). Bạn cũng có thể muốn tham khảo các bảng này cho các loại tệp và số ma thuật của chúng, để thực hiện xác minh phía máy chủ mạnh mẽ hơn. Using the
  
  
  
1 attribute only provides a way of filtering in the files of types that are of interest. Browsers still allow users to choose files of any type. Additional (client-side) checks should be done (using JavaScript, one way would be this), and definitely file types MUST be verified on the server, using a combination of MIME-type using both the file extension and its binary signature (ASP.NET, PHP, Ruby, Java). You might also want to refer to these tables for file types and their magic numbers, to perform a more robust server-side verification.

Dưới đây là ba lần đọc tốt về tải trọng tệp và bảo mật.

Chỉnh sửa: Có thể xác minh loại tệp bằng chữ ký nhị phân của nó cũng có thể được thực hiện ở phía máy khách bằng cách sử dụng JavaScript (thay vì chỉ nhìn vào phần mở rộng) bằng API tệp HTML5, nhưng vẫn phải xác minh tệp trên máy chủ, vì người dùng độc hại vẫn có thể tải lên các tệp bằng cách thực hiện yêu cầu HTTP tùy chỉnh. Maybe file type verification using its binary signature can also be done on client side using JavaScript (rather than just by looking at the extension) using HTML5 File API, but still, the file must be verified on the server, because a malicious user will still be able to upload files by making a custom HTTP request.

  
  
  
3 Các yếu tố với
  
  
  
4 Hãy để 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 sử dụng biểu mẫu hoặc thao tác bằng mã JavaScript và API tệp.
  
  
  
4
let the user choose one or more files from their device storage. Once chosen, the files can be uploaded to a server using form submission, or manipulated using JavaScript code and the File API.

Thử nó

Giá trị

Thuộc tính

  
  
  
5 đầu vào của tệp chứa một chuỗi đại diện cho đường dẫn đến (các) tệp đã chọn. Nếu chưa chọn tệp, giá trị là một chuỗi trống (
  
  
  
6). Khi người dùng đã chọn nhiều tệp,
  
  
  
5 thể hiện 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
  
  
  
8 của đầu vào.

Thuộc tính bổ sung

Ngoài các thuộc tính phổ biến được chia sẻ bởi tất cả các phần tử

  
  
  
3, các đầu vào loại


 
0 cũng hỗ trợ các thuộc tính sau.

Chấp nhận

Giá trị thuộc tính

  
  
  
1 là một chuỗi xác định các loại tệp mà đầu vào tệp sẽ chấp nhận. Chuỗi này là một danh sách được phân tách bằng dấu phẩy của các nhà xác định loại tệp duy nhất. 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 việc cung cấp một tập hợp các nhà xác định loại kỹ lưỡng khi bạn cần các tệp có định dạng nhất định.unique file type specifiers. Because a given file type may be identified in more than one manner, it's useful to provide a thorough set of type specifiers when you need files of a given format.

Chẳng hạn, có một số cách có thể xác định được các tệp Microsoft Word, do đó, một trang web chấp nhận các tệp Word có thể sử dụng

  
  
  
3 như thế này:

<input
  type="file"
  id="docpicker"
  accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />

chiếm lấy

Giá trị thuộc tính



 
3 là một chuỗi chỉ định camera nào sẽ sử dụng để chụp dữ liệu hình ảnh hoặc video, nếu thuộc tính
  
  
  
1 chỉ ra rằng đầu vào phải thuộc một trong các loại đó. Giá trị của


 
5 chỉ ra rằng camera và/hoặc micrô phải đối mặt với người dùng. Giá trị của


 
6 chỉ định rằng camera hướng ra ngoài và/hoặc micrô nên được sử dụng. Nếu thuộc tính này bị thiếu, tác nhân người dùng có thể tự do quyết định những việc cần làm của riêng mình. Nếu chế độ đối diện được yêu cầu không có sẵn, tác nhân người dùng có thể quay trở lại chế độ mặc định ưa thích của nó.

Lưu ý:



 
3 Trước đây là một thuộc tính boolean, nếu có, yêu cầu (các) thiết bị chụp phương tiện của thiết bị như camera hoặc micrô được sử dụng thay vì yêu cầu đầu vào tệp.


 
3 was previously a Boolean attribute which, if present, requested that the device's media capture device(s) such as camera or microphone be used instead of requesting a file input.

nhiều

Khi thuộc tính boolean



 
8 được chỉ định, đầu vào tệp cho phép người dùng chọn nhiều hơn một tệp.

Các thuộ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 thực hiện chúng.

9

Thuộc tính Boolean



 
9, nếu có, chỉ ra rằng chỉ các thư mục mới có sẵn để được người dùng chọn trong giao diện Picker tệp. Xem
<input
  type="file"
  id="docpicker"
  accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
1 để 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,



 
9 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 tiêu chuẩn và không nên được sử dụng trừ khi bạn không có sự thay thế.

Trì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ả một loại tệp có thể được người dùng chọn trong phần tử

  
  
  
3 của loại


 
0. Mỗi trình xác định loại tệp duy nhất có thể có một trong các biểu mẫu sau:unique file type specifier is a string that describes a type of file that may be selected by the user in an
  
  
  
3 element of type


 
0. Each unique file type specifier may take one of the following forms:

  • Một tiện ích mở rộng tên tệp không nhạy cảm trường hợp hợp lệ, bắt đầu với một ký tự khoảng thời gian ("."). Ví dụ:
    <input
      type="file"
      id="docpicker"
      accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
    
    5,
    <input
      type="file"
      id="docpicker"
      accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
    
    6 hoặc
    <input
      type="file"
      id="docpicker"
      accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
    
    7.
  • Một chuỗi loại MIME hợp lệ, không có phần mở rộng.
  • Chuỗi
    <input
      type="file"
      id="docpicker"
      accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
    
    8 có nghĩa là "bất kỳ tệp âm thanh nào".
  • Chuỗi
    <input
      type="file"
      id="docpicker"
      accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
    
    9 có nghĩa là "bất kỳ tệp video".
  • Chuỗi
    <input type="file" accept="image/*,.pdf" />
    
    0 có nghĩa là "bất kỳ tệp hình ảnh" nào.

Thuộc tính

  
  
  
1 lấy một chuỗi chứa một hoặc nhiều nhà xác đị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ụ: một trình chọn tệp cần nội dung có thể được trình bày dưới dạng hình ảnh, bao gồm cả các định dạng hình ảnh tiêu chuẩn và tệp PDF, có thể trông như thế này:

<input type="file" accept="image/*,.pdf" />

Sử dụng đầu vào tệp

Một ví dụ cơ bản

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>

div {
  margin-bottom: 10px;
}

Điều này tạo ra đầu ra sau:

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 Picker Picker cho phép người dùng chọn tệp.

Bao gồm thuộc tính



 
8, như được hiển thị ở trên, chỉ định rằng nhiều tệp có thể được chọn cùng một lúc. Người dùng có thể chọn nhiều tệp từ trình 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 (ví dụ: bằng cách giữ sự thay đổi hoặc điều khiển, sau đó nhấp vào). Nếu bạn chỉ muốn người dùng chọn một tệp duy nhất cho mỗi
  
  
  
3, hãy bỏ qua thuộc tính


 
8.

Nhậ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

  
  
  
8 của phần tử, là đối tượng
<input type="file" accept="image/*,.pdf" />
6 chứa danh sách các đối tượng
<input type="file" accept="image/*,.pdf" />
7.
<input type="file" accept="image/*,.pdf" />
6 hoạt động giống như một mảng, vì vậy bạn có thể kiểm tra thuộc tính
<input type="file" accept="image/*,.pdf" />
9 của nó để nhận số lượng tệp đã chọn.

Mỗi đối tượng

<input type="file" accept="image/*,.pdf" />
7 chứa các thông tin sau:

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
1

Tên của tập tin.

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
2

Một số chỉ định ngày và thời gian mà tệp được sửa đổi lần cuối, tính bằng mili giây kể từ thời đại Unix (ngày 1 tháng 1 năm 1970 lúc nửa đêm).

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
3 không dùng nữaDeprecated

Một đối tượng

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
4 đại diện cho ngày và thời gian mà tệp được sửa đổi lần cuối. Điều này không được sử dụng và không nên được sử dụng. Sử dụng
<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
2 thay thế.

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
6

Kích thước của tệp trong byte.

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
7

Loại MIME của tập tin.

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
8 không chuẩnNon-standard

Một chuỗi chỉ định đường dẫn của tệp so với thư mục cơ sở được chọn trong trình chọn thư mục (nghĩa là bộ chọn



 
0 trong đó thuộc tính


 
9 được đặt). Đây là không chuẩn và nên được sử dụng một cách thận trọng.

Lưu ý: Bạn có thể đặt cũng như nhận được giá trị của

  
  
  
8 trong tất cả các trình duyệt hiện đại; Điều này gần đây nhất đã được thêm vào Firefox, trong phiên bản 57 (xem Bug & NBSP; 1384030). You can set as well as get the value of
  
  
  
8 in all modern browsers; this was most recently added to Firefox, in version 57 (see bug 1384030).

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; Thay vào đó, bạn thường muốn họ chọn các tệp thuộc loại hoặc loại cụ thể. 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 web, chẳng hạn như JPEG hoặc PNG.

Các loại tệp có thể chấp nhận có thể được chỉ định với thuộc tính

  
  
  
1, có một danh sách phân tách bằng dấu phẩy các phần mở rộng tệp được phép hoặc các loại MIME. Vài ví dụ:

  • div {
      margin-bottom: 10px;
    }
    
    3 hoặc
    div {
      margin-bottom: 10px;
    }
    
    4 - Chấp nhận các tệp PNG.
  • div {
      margin-bottom: 10px;
    }
    
    5 hoặc
    div {
      margin-bottom: 10px;
    }
    
    6 - Chấp nhận các tệp PNG hoặc JPEG.
  • div {
      margin-bottom: 10px;
    }
    
    7 - Chấp nhận bất kỳ tệp nào có loại MIME
    <input type="file" accept="image/*,.pdf" />
    
    0. (Nhiều thiết bị di động cũng cho phép người dùng chụp ảnh bằng máy ảnh khi nó được sử dụng.)
  • div {
      margin-bottom: 10px;
    }
    
    9 - Chấp nhận bất cứ thứ gì có mùi giống như một tài liệu MS Word.

Hãy xem xét một ví dụ đầy đủ hơn:

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="profile_pic">Choose file to uploadlabel>
    <input
      type="file"
      id="profile_pic"
      name="profile_pic"
      accept=".jpg, .jpeg, .png" />
  div>
  <div>
    <button>Submitbutton>
  div>
form>

div {
  margin-bottom: 10px;
}

Điều này tạo ra một đầu ra trông tương tự với ví dụ trước:

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 trình chọn tệp chỉ cho phép bạn chọn các loại tệp được chỉ định trong giá trị

  
  
  
1 (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

  
  
  
1 không xác nhận các loại của các tệp đã chọn; Nó cung cấp gợi ý cho các trình duyệt để hướng dẫn người dùng hướng tới việc chọn các loại tệp chính xác. Vẫn có thể (trong hầu hết các trường hợp) để người dùng chuyển đổi tùy chọn trong trình chọn tệp cho phép ghi đè này và chọn bất kỳ tệp nào họ muốn, sau đó chọn các loại tệp không chính xác.

Do đó, bạn nên đảm bảo rằng thuộc tính

  
  
  
1 được sao lưu bằng cách xác thực phía máy chủ thích hợp.

Ghi chú

  1. Bạn không thể đặt giá trị của trình chọn tệp từ tập lệnh - làm một cái gì đó như sau không có hiệu lực:

    
     
    0

  2. Khi một tệp được chọn bằng cách sử dụng
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="profile_pic">Choose file to uploadlabel>
        <input
          type="file"
          id="profile_pic"
          name="profile_pic"
          accept=".jpg, .jpeg, .png" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    3, đường dẫn thực đến tệp nguồn không được hiển thị trong thuộc tính
      
      
      
    5 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
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="profile_pic">Choose file to uploadlabel>
        <input
          type="file"
          id="profile_pic"
          name="profile_pic"
          accept=".jpg, .jpeg, .png" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    5 đã chuẩn bị cho nó. Có một số lý do lịch sử cho sự khó hiể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ật.

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

  
  
  
8, cũng như hiển thị một vài thủ thuật thông minh.

Lưu ý: Bạn có thể thấy mã nguồn đầy đủ cho ví dụ này trên GitHub-File-example.html (xem nó cũng trực tiếp). Chúng tôi sẽ không giải thích CSS; JavaScript là trọng tâm chính. You can see the complete source code for this example on GitHub — file-example.html (see it live also). We won't explain the CSS; the JavaScript is the main focus.

Trước hết, chúng ta hãy nhìn vào HTML:


 
1


 
2

Đ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 đi qua JavaScript.

Trong các dòng đầu tiên của tập lệnh, chúng tôi nhận được các tài liệu tham khảo cho chính đầu vào biểu mẫu và phần tử

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="profile_pic">Choose file to uploadlabel>
    <input
      type="file"
      id="profile_pic"
      name="profile_pic"
      accept=".jpg, .jpeg, .png" />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
7 với lớp
<form method="post" enctype="multipart/form-data">
  <div>
    <label for="profile_pic">Choose file to uploadlabel>
    <input
      type="file"
      id="profile_pic"
      name="profile_pic"
      accept=".jpg, .jpeg, .png" />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
8. Tiếp theo, chúng tôi ẩn phần tử
  
  
  
3 - chúng tôi làm điều này bởi vì các đầ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ử

 
9 bằng cách nhấp vào
div {
  margin-bottom: 10px;
}
1 của nó, vì vậy tốt hơn là ẩn trực quan

 
9 và tạo kiểu cho nhãn như một nút, vì vậy người dùng sẽ biết tương tác với nó nếu họ muốn tải lên các tệp.


 
3

Lưu ý:

div {
  margin-bottom: 10px;
}
3 được sử dụng để ẩn đầu vào tệp thay vì
div {
  margin-bottom: 10px;
}
4 hoặc
div {
  margin-bottom: 10px;
}
5, bởi 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ác.
div {
  margin-bottom: 10px;
}
3 is used to hide the file input instead of
div {
  margin-bottom: 10px;
}
4 or
div {
  margin-bottom: 10px;
}
5, because assistive technology interprets the latter two styles to mean the file input isn't interactive.

Tiếp theo, chúng tôi thêm một trình 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, khi các tệp được chọn). Người nghe sự kiện gọi chức năng

div {
  margin-bottom: 10px;
}
6 tùy chỉnh của chúng tôi.


 
4

Bất cứ khi nào hàm

div {
  margin-bottom: 10px;
}
6 được gọi, chúng tôi:

  • Sử dụng vòng lặp
    div {
      margin-bottom: 10px;
    }
    
    8 để làm trống các nội dung trước đó của bản xem trước
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="profile_pic">Choose file to uploadlabel>
        <input
          type="file"
          id="profile_pic"
          name="profile_pic"
          accept=".jpg, .jpeg, .png" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    7.
  • Lấy đối tượng
    <input type="file" accept="image/*,.pdf" />
    
    6 chứa thông tin trên tất cả các tệp đã chọn và lưu trữ nó trong một biến có tên là
    
     
    01.
  • Kiểm tra xem nếu không có tệp nào được chọn, bằng cách kiểm tra xem
    
     
    02 có bằng 0. Nếu vậy, hãy in một thông báo vào bản xem trước
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="profile_pic">Choose file to uploadlabel>
        <input
          type="file"
          id="profile_pic"
          name="profile_pic"
          accept=".jpg, .jpeg, .png" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    7 nói rằng không có tệp nào được chọn.
  • Nếu các tệp đã được chọn, chúng tôi lặp qua từng cái, in thông tin về nó vào bản xem trước
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="profile_pic">Choose file to uploadlabel>
        <input
          type="file"
          id="profile_pic"
          name="profile_pic"
          accept=".jpg, .jpeg, .png" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    7. Những điều cần lưu ý ở đây:
  • Chúng tôi sử dụng chức năng tùy chỉnh ____105 để kiểm tra xem tệp có đúng loại không (ví dụ: các loại hình ảnh được chỉ định trong thuộc tính
      
      
      
    1).
  • Nếu có, chúng tôi:
    • In ra tên và kích thước tệp của nó thành một mục danh sách bên trong
      <form method="post" enctype="multipart/form-data">
        <div>
          <label for="profile_pic">Choose file to uploadlabel>
          <input
            type="file"
            id="profile_pic"
            name="profile_pic"
            accept=".jpg, .jpeg, .png" />
        div>
        <div>
          <button>Submitbutton>
        div>
      form>
      
      7 trước đó (thu được từ
      
       
      08 và
      
       
      09). Hàm
      
       
      10 tùy chỉnh trả về một phiên bản được định dạng độc đáo có 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 bằng byte tuyệt đối).
    • Tạo một bản xem trước hình thu nhỏ của hình ảnh bằng cách gọi
      
       
      11. Sau đó, chèn hình ảnh vào mục danh sách bằng cách tạo một
      
       
      12 mới và đặt
      
       
      13 của nó thành hình thu nhỏ.
  • Nếu loại tệp không hợp lệ, chúng tôi hiển thị một thông báo bên trong mục danh sách nói với người dùng rằng họ cần chọn loại tệp khác.


 
5

Hàm


 
05 tùy chỉnh lấy đối tượng
<input type="file" accept="image/*,.pdf" />
7 làm tham số, sau đó sử dụng

 
16 để kiểm tra xem có bất kỳ giá trị nào trong

 
17 phù hợp với thuộc tính
<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
7 của tệp không. Nếu một trận đấu được tìm thấy, hàm trả về

 
19. Nếu không tìm thấy trận đấu nào, nó sẽ trả về

 
20.


 
6

Hàm


 
10 lấy một số (của byte, được lấy từ thuộc tính
<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choose file to uploadlabel>
    <input type="file" id="file" name="file" multiple />
  div>
  <div>
    <button>Submitbutton>
  div>
form>
6 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 trong byte/kb/mb.


 
7

Ví dụ trông như thế này; Có một vở kịch:

Thông số kỹ thuật

Sự chỉ rõ
HTML tiêu chuẩn # file-upload-state- (type = file)
# file-upload-state-(type=file)

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

  • Sử dụng các tệp từ các ứng dụng web - chứa một số ví dụ hữu ích khác liên quan đến
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="profile_pic">Choose file to uploadlabel>
        <input
          type="file"
          id="profile_pic"
          name="profile_pic"
          accept=".jpg, .jpeg, .png" />
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    3 và API tệp.
  • Khả năng tương thích của các thuộc tính CSS

Làm cách nào để hạn chế loại tải lên tệp trong HTML?

Giới hạn các loại tệp được chấp nhận Các loại tệp có thể chấp nhận có thể được chỉ định với thuộc tính Chấp nhận, có một danh sách được phân tách bằng dấu phẩy các phần mở rộng tệp được phép hoặc các loại MIME.Acceptable file types can be specified with the accept attribute, which takes a comma-separated list of allowed file extensions or MIME types.

Làm cách nào để hạn chế tải lên tệp trong React?

Bạn có thể hạn chế kích thước tệp được phép tối đa (tính bằng byte) bằng cách sử dụng thuộc tính MaxFilesize.Nếu tệp đã chọn vượt quá kích thước tối đa, thông báo lỗi sẽ được hiển thị.by using the maxFileSize property. If the selected file exceeds the maximum size, an error message will be displayed.

Làm thế nào bạn có thể chỉ chấp nhận các tệp JPG và PNG bằng HTML5?

Giới hạn các loại tệp được chấp nhận..
Chấp nhận = "Hình ảnh/PNG" hoặc Accept = ". PNG" - Chấp nhận các tệp PNG ..
Chấp nhận = "Hình ảnh/png, hình ảnh/jpeg" hoặc Accept = ". Png,. Jpg,. ....
Chấp nhận = "Hình ảnh/*" - Chấp nhận bất kỳ tệp nào có hình ảnh/* MIME.(Nhiều thiết bị di động cũng cho phép người dùng chụp ảnh bằng máy ảnh khi nó được sử dụng.).
Chấp nhận = ". DOC, DOCX, ..

Làm cách nào để tùy chỉnh tệp loại đầu vào?

Có ba bước cho điều này:..
Bao bọc tệp đầu vào bên trong một phần tử nhãn.Chọn ảnh.....
Thay đổi màn hình của thẻ đầu vào thành không có.Đầu vào {Display: Không có;}.
Kiểu phần tử nhãn.Ở đây, bạn có thể thêm nhiều yếu tố hoặc biểu tượng.Đây là nơi ma thuật xuất hiện. Nhãn {.