Hướng dẫn how do i accept an image in html? - làm cách nào để chấp nhận một hình ảnh trong html?

❮ Thẻ HTML

Thí dụ

Chỉ định loại tệp nào mà người dùng có thể chọn từ hộp thoại đầu vào tệp:

& nbsp; Chọn hình ảnh: & NBSP; & nbsp;
 
 
 

Hãy tự mình thử »


Định nghĩa và cách sử dụng

Thuộc tính

<input type="file" accept="image/*,.pdf" />
4 Chỉ định một bộ lọc cho loại tệp nào mà người dùng có thể chọn từ hộp thoại đầu vào tệp.

Lưu ý: Thuộc tính

<input type="file" accept="image/*,.pdf" />
4 chỉ có thể được sử dụng với
<input type="file" accept="image/*,.pdf" />
6.
The
<input type="file" accept="image/*,.pdf" />
4 attribute can only be used with
<input type="file" accept="image/*,.pdf" />
6.

Mẹo: Không sử dụng thuộc tính này như một công cụ xác thực. Tải lên tệp phải được xác thực trên máy chủ. Do not use this attribute as a validation tool. File uploads should be validated on the server.


Hỗ trợ trình duyệt

Các số trong bảng chỉ định phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ thuộc tính.

Thuộc tính
Chấp nhận26.0 10.0 37.0 11.1 15.0

Cú pháp

Mẹo: Để chỉ định nhiều hơn một giá trị, hãy tách các giá trị bằng dấu phẩy (ví dụ:

<input type="file" accept="image/*,.pdf" />
7. To specify more than one value, separate the values with a comma (e.g.
<input type="file" accept="image/*,.pdf" />
7.

Giá trị thuộc tính

Giá trịSự mô tả
File_extensionChỉ định (các) tiện ích mở rộng tệp (ví dụ: .gif, .jpg, .png, .doc) Người dùng có thể chọn từ
âm thanh/*Người dùng có thể chọn tất cả các tệp âm thanh
video/*Người dùng có thể chọn tất cả các tệp video
hình ảnh/*Người dùng có thể chọn tất cả các tệp hình ảnh
Media_TypeMột loại phương tiện hợp lệ, không có tham số. Nhìn vào các loại phương tiện truyền thông IANA để biết danh sách đầy đủ các loại phương tiện tiêu chuẩn

❮ Thẻ HTML


<input type="file" accept="image/*,.pdf" />
8 Các thành phần với
<input type="file" accept="image/*,.pdf" />
9 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.
<input type="file" accept="image/*,.pdf" />
9
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 ____20 của tệp đầu vào 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 (

<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). Khi người dùng đã chọn nhiều tệp,
<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>
0 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
<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 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ử

<input type="file" accept="image/*,.pdf" />
8, các đầu vào loại
<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>
5 cũng hỗ trợ các thuộc tính sau.

Chấp nhận

Giá trị thuộc tính

<input type="file" accept="image/*,.pdf" />
4 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

<input type="file" accept="image/*,.pdf" />
8 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

<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 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
<input type="file" accept="image/*,.pdf" />
4 chỉ ra rằng đầu vào phải thuộc một trong các loại đó. Giá trị của
div {
  margin-bottom: 10px;
}
0 chỉ ra rằng camera và/hoặc micrô phải đối mặt với người dùng. Giá trị của
div {
  margin-bottom: 10px;
}
1 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 ý:

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

div {
  margin-bottom: 10px;
}
3 Boolean đượ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.

div { margin-bottom: 10px; } 4

Thuộc tính Boolean

div {
  margin-bottom: 10px;
}
4, nếu có, chỉ ra rằng chỉ có các thư mục mới có sẵn để được người dùng chọn trong giao diện chọn tệp. Xem
div {
  margin-bottom: 10px;
}
6 để 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,

div {
  margin-bottom: 10px;
}
4 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ử

<input type="file" accept="image/*,.pdf" />
8 loại
<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>
5. 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
<input type="file" accept="image/*,.pdf" />
8 element of type
<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>
5. 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ụ:
    <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>
    
    0,
    <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>
    
    1 hoặ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>
    
    2.
  • Một chuỗi loại MIME hợp lệ, không có phần mở rộng.
  • Chuỗ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>
    
    3 có nghĩa là "bất kỳ tệp âm thanh nào".
  • Chuỗ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>
    
    4 có nghĩa là "bất kỳ tệp video".
  • Chuỗ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 có nghĩa là "bất kỳ tệp hình ảnh" nào.

Thuộc tính

<input type="file" accept="image/*,.pdf" />
4 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

div {
  margin-bottom: 10px;
}
3, 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
<input type="file" accept="image/*,.pdf" />
8, hãy bỏ qua thuộc tính
div {
  margin-bottom: 10px;
}
3.

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

<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 của phần tử, là đối tượng
div {
  margin-bottom: 10px;
}
1 chứa danh sách các đối tượng
div {
  margin-bottom: 10px;
}
2.
div {
  margin-bottom: 10px;
}
1 hoạt động giống như một mảng, vì vậy bạn có thể kiểm tra thuộc tính
div {
  margin-bottom: 10px;
}
4 của nó để lấy số lượng tệp đã chọn.

Mỗi đối tượng

div {
  margin-bottom: 10px;
}
2 chứa các thông tin sau:

div {
  margin-bottom: 10px;
}
6

Tên của tập tin.

div {
  margin-bottom: 10px;
}
7

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

div {
  margin-bottom: 10px;
}
8 không dùng nữaDeprecated

Một đối tượng

div {
  margin-bottom: 10px;
}
9 đạ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
div {
  margin-bottom: 10px;
}
7 thay thế.

const input = document.querySelector("input[type=file]");
input.value = "foo";
1

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

const input = document.querySelector("input[type=file]");
input.value = "foo";
2

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

const input = document.querySelector("input[type=file]");
input.value = "foo";
3 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

<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>
5 trong đó thuộc tính
div {
  margin-bottom: 10px;
}
4 đượ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

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

<input type="file" accept="image/*,.pdf" />
4, 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ụ:

  • const input = document.querySelector("input[type=file]");
    input.value = "foo";
    
    8 hoặc
    const input = document.querySelector("input[type=file]");
    input.value = "foo";
    
    9 - Chấp nhận các tệp PNG.
  • <form method="post" enctype="multipart/form-data">
      <div>
        <label for="image_uploads">Choose images to upload (PNG, JPG)label>
        <input
          type="file"
          id="image_uploads"
          name="image_uploads"
          accept=".jpg, .jpeg, .png"
          multiple />
      div>
      <div class="preview">
        <p>No files currently selected for uploadp>
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    0 hoặc
    <form method="post" enctype="multipart/form-data">
      <div>
        <label for="image_uploads">Choose images to upload (PNG, JPG)label>
        <input
          type="file"
          id="image_uploads"
          name="image_uploads"
          accept=".jpg, .jpeg, .png"
          multiple />
      div>
      <div class="preview">
        <p>No files currently selected for uploadp>
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    1 - Chấp nhận các tệp PNG hoặc JPEG.
  • <form method="post" enctype="multipart/form-data">
      <div>
        <label for="image_uploads">Choose images to upload (PNG, JPG)label>
        <input
          type="file"
          id="image_uploads"
          name="image_uploads"
          accept=".jpg, .jpeg, .png"
          multiple />
      div>
      <div class="preview">
        <p>No files currently selected for uploadp>
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    2 - Chấp nhận bất kỳ tệp nào có loạ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 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.)
  • <form method="post" enctype="multipart/form-data">
      <div>
        <label for="image_uploads">Choose images to upload (PNG, JPG)label>
        <input
          type="file"
          id="image_uploads"
          name="image_uploads"
          accept=".jpg, .jpeg, .png"
          multiple />
      div>
      <div class="preview">
        <p>No files currently selected for uploadp>
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    4 - 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ị

<input type="file" accept="image/*,.pdf" />
4 (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

<input type="file" accept="image/*,.pdf" />
4 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

<input type="file" accept="image/*,.pdf" />
4 đượ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:

    const input = document.querySelector("input[type=file]");
    input.value = "foo";
    

  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="image_uploads">Choose images to upload (PNG, JPG)label>
        <input
          type="file"
          id="image_uploads"
          name="image_uploads"
          accept=".jpg, .jpeg, .png"
          multiple />
      div>
      <div class="preview">
        <p>No files currently selected for uploadp>
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    8, đường dẫn thực đến tệp nguồn không được hiển thị trong thuộc tính ____2020 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
    html {
      font-family: sans-serif;
    }
    
    form {
      width: 580px;
      background: #ccc;
      margin: 0 auto;
      padding: 20px;
      border: 1px solid black;
    }
    
    form ol {
      padding-left: 0;
    }
    
    form li,
    div > p {
      background: #eee;
      display: flex;
      justify-content: space-between;
      margin-bottom: 10px;
      list-style-type: none;
      border: 1px solid black;
    }
    
    form img {
      height: 64px;
      order: 1;
    }
    
    form p {
      line-height: 32px;
      padding-left: 10px;
    }
    
    form label,
    form button {
      background-color: #7f9ccb;
      padding: 5px 10px;
      border-radius: 5px;
      border: 1px ridge black;
      font-size: 0.8rem;
      height: auto;
    }
    
    form label:hover,
    form button:hover {
      background-color: #2d5ba3;
      color: white;
    }
    
    form label:active,
    form button:active {
      background-color: #0d3f8f;
      color: white;
    }
    
    0 được 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

<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, 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:

<form method="post" enctype="multipart/form-data">
  <div>
    <label for="image_uploads">Choose images to upload (PNG, JPG)label>
    <input
      type="file"
      id="image_uploads"
      name="image_uploads"
      accept=".jpg, .jpeg, .png"
      multiple />
  div>
  <div class="preview">
    <p>No files currently selected for uploadp>
  div>
  <div>
    <button>Submitbutton>
  div>
form>

html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}

Đ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 tham chiếu đến chính đầu vào biểu mẫu và phần tử

html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
2 với lớp
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
3. Tiếp theo, chúng tôi ẩn phần tử
<input type="file" accept="image/*,.pdf" />
8 - 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ử
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
5 bằng cách nhấp vào
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
6 của nó, vì vậy tốt hơn là ẩn trực quan
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
5 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.

const input = document.querySelector('input');
const preview = document.querySelector('.preview');

input.style.opacity = 0;

Lưu ý:

html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
8 được sử dụng để ẩn đầu vào tệp thay vì
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
9 hoặc
const input = document.querySelector('input');
const preview = document.querySelector('.preview');

input.style.opacity = 0;
0, 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.
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
8 is used to hide the file input instead of
html {
  font-family: sans-serif;
}

form {
  width: 580px;
  background: #ccc;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid black;
}

form ol {
  padding-left: 0;
}

form li,
div > p {
  background: #eee;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
  list-style-type: none;
  border: 1px solid black;
}

form img {
  height: 64px;
  order: 1;
}

form p {
  line-height: 32px;
  padding-left: 10px;
}

form label,
form button {
  background-color: #7f9ccb;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px ridge black;
  font-size: 0.8rem;
  height: auto;
}

form label:hover,
form button:hover {
  background-color: #2d5ba3;
  color: white;
}

form label:active,
form button:active {
  background-color: #0d3f8f;
  color: white;
}
9 or
const input = document.querySelector('input');
const preview = document.querySelector('.preview');

input.style.opacity = 0;
0, 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

const input = document.querySelector('input');
const preview = document.querySelector('.preview');

input.style.opacity = 0;
1 tùy chỉnh của chúng tôi.

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

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

const input = document.querySelector('input');
const preview = document.querySelector('.preview');

input.style.opacity = 0;
1 được gọi, chúng tôi:

  • Sử dụng vòng lặp
    const input = document.querySelector('input');
    const preview = document.querySelector('.preview');
    
    input.style.opacity = 0;
    
    3 để làm trống các nội dung trước đó của bản xem trước
    html {
      font-family: sans-serif;
    }
    
    form {
      width: 580px;
      background: #ccc;
      margin: 0 auto;
      padding: 20px;
      border: 1px solid black;
    }
    
    form ol {
      padding-left: 0;
    }
    
    form li,
    div > p {
      background: #eee;
      display: flex;
      justify-content: space-between;
      margin-bottom: 10px;
      list-style-type: none;
      border: 1px solid black;
    }
    
    form img {
      height: 64px;
      order: 1;
    }
    
    form p {
      line-height: 32px;
      padding-left: 10px;
    }
    
    form label,
    form button {
      background-color: #7f9ccb;
      padding: 5px 10px;
      border-radius: 5px;
      border: 1px ridge black;
      font-size: 0.8rem;
      height: auto;
    }
    
    form label:hover,
    form button:hover {
      background-color: #2d5ba3;
      color: white;
    }
    
    form label:active,
    form button:active {
      background-color: #0d3f8f;
      color: white;
    }
    
    2.
  • Lấy đối tượng
    div {
      margin-bottom: 10px;
    }
    
    1 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à
    const input = document.querySelector('input');
    const preview = document.querySelector('.preview');
    
    input.style.opacity = 0;
    
    6.
  • Kiểm tra xem nếu không có tệp nào được chọn, bằng cách kiểm tra xem
    const input = document.querySelector('input');
    const preview = document.querySelector('.preview');
    
    input.style.opacity = 0;
    
    7 có bằng 0. Nếu vậy, hãy in một thông báo vào bản xem trước
    html {
      font-family: sans-serif;
    }
    
    form {
      width: 580px;
      background: #ccc;
      margin: 0 auto;
      padding: 20px;
      border: 1px solid black;
    }
    
    form ol {
      padding-left: 0;
    }
    
    form li,
    div > p {
      background: #eee;
      display: flex;
      justify-content: space-between;
      margin-bottom: 10px;
      list-style-type: none;
      border: 1px solid black;
    }
    
    form img {
      height: 64px;
      order: 1;
    }
    
    form p {
      line-height: 32px;
      padding-left: 10px;
    }
    
    form label,
    form button {
      background-color: #7f9ccb;
      padding: 5px 10px;
      border-radius: 5px;
      border: 1px ridge black;
      font-size: 0.8rem;
      height: auto;
    }
    
    form label:hover,
    form button:hover {
      background-color: #2d5ba3;
      color: white;
    }
    
    form label:active,
    form button:active {
      background-color: #0d3f8f;
      color: white;
    }
    
    2 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
    html {
      font-family: sans-serif;
    }
    
    form {
      width: 580px;
      background: #ccc;
      margin: 0 auto;
      padding: 20px;
      border: 1px solid black;
    }
    
    form ol {
      padding-left: 0;
    }
    
    form li,
    div > p {
      background: #eee;
      display: flex;
      justify-content: space-between;
      margin-bottom: 10px;
      list-style-type: none;
      border: 1px solid black;
    }
    
    form img {
      height: 64px;
      order: 1;
    }
    
    form p {
      line-height: 32px;
      padding-left: 10px;
    }
    
    form label,
    form button {
      background-color: #7f9ccb;
      padding: 5px 10px;
      border-radius: 5px;
      border: 1px ridge black;
      font-size: 0.8rem;
      height: auto;
    }
    
    form label:hover,
    form button:hover {
      background-color: #2d5ba3;
      color: white;
    }
    
    form label:active,
    form button:active {
      background-color: #0d3f8f;
      color: white;
    }
    
    2. Những điều cần lưu ý ở đây:
  • Chúng tôi sử dụng hàm
    <input type="file" accept="image/*,.pdf" />
    
    00 tùy chỉnh để 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
    <input type="file" accept="image/*,.pdf" />
    
    4).
  • 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
      html {
        font-family: sans-serif;
      }
      
      form {
        width: 580px;
        background: #ccc;
        margin: 0 auto;
        padding: 20px;
        border: 1px solid black;
      }
      
      form ol {
        padding-left: 0;
      }
      
      form li,
      div > p {
        background: #eee;
        display: flex;
        justify-content: space-between;
        margin-bottom: 10px;
        list-style-type: none;
        border: 1px solid black;
      }
      
      form img {
        height: 64px;
        order: 1;
      }
      
      form p {
        line-height: 32px;
        padding-left: 10px;
      }
      
      form label,
      form button {
        background-color: #7f9ccb;
        padding: 5px 10px;
        border-radius: 5px;
        border: 1px ridge black;
        font-size: 0.8rem;
        height: auto;
      }
      
      form label:hover,
      form button:hover {
        background-color: #2d5ba3;
        color: white;
      }
      
      form label:active,
      form button:active {
        background-color: #0d3f8f;
        color: white;
      }
      
      2 trước đó (thu được từ
      <input type="file" accept="image/*,.pdf" />
      
      03 và
      <input type="file" accept="image/*,.pdf" />
      
      04). Hàm
      <input type="file" accept="image/*,.pdf" />
      
      05 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 bản xem trước hình thu nhỏ của hình ảnh bằng cách gọi
      <input type="file" accept="image/*,.pdf" />
      
      06. Sau đó, chèn hình ảnh vào mục danh sách bằng cách tạo một
      <input type="file" accept="image/*,.pdf" />
      
      07 mới và đặt
      <input type="file" accept="image/*,.pdf" />
      
      08 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.

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

Hàm

<input type="file" accept="image/*,.pdf" />
00 tùy chỉnh lấy đối tượng
div {
  margin-bottom: 10px;
}
2 làm tham số, sau đó sử dụng
<input type="file" accept="image/*,.pdf" />
11 để kiểm tra xem có bất kỳ giá trị nào trong
<input type="file" accept="image/*,.pdf" />
12 có khớp với thuộc tính
const input = document.querySelector("input[type=file]");
input.value = "foo";
2 của tệp không. Nếu một trận đấu được tìm thấy, hàm trả về
<input type="file" accept="image/*,.pdf" />
14. Nếu không tìm thấy trận đấu nào, nó sẽ trả về
<input type="file" accept="image/*,.pdf" />
15.

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

Hàm

<input type="file" accept="image/*,.pdf" />
05 lấy một số (của byte, được lấy từ thuộc tính
const input = document.querySelector("input[type=file]");
input.value = "foo";
1 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.

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

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="image_uploads">Choose images to upload (PNG, JPG)label>
        <input
          type="file"
          id="image_uploads"
          name="image_uploads"
          accept=".jpg, .jpeg, .png"
          multiple />
      div>
      <div class="preview">
        <p>No files currently selected for uploadp>
      div>
      <div>
        <button>Submitbutton>
      div>
    form>
    
    8 và API tệp.
  • Khả năng tương thích của các thuộc tính CSS

Làm thế nào để bạn nhập một hình ảnh trong HTML?

Xác định một hình ảnh là một nút gửi. Đường dẫn đến hình ảnh được chỉ định trong thuộc tính SRC. defines an image as a submit button. The path to the image is specified in the src attribute.

Làm thế nào để bạn chấp nhận trong HTML?

Thuộc tính chấp nhận chỉ định một bộ lọc cho những loại tệp mà người dùng có thể chọn từ hộp thoại đầu vào tệp. Lưu ý: Thuộc tính chấp nhận chỉ có thể được sử dụng với. Mẹo: Không sử dụng thuộc tính này như một công cụ xác thực. Tải lên tệp phải được xác thực trên máy chủ.The accept attribute can only be used with . Tip: Do not use this attribute as a validation tool. File uploads should be validated on the server.

Làm thế nào để bạn thực hiện một đầu vào chỉ chấp nhận một hình ảnh?

Nhưng có thể hạn chế các loại tệp chỉ trong hình ảnh hoặc phần mở rộng tệp hình ảnh nhất định.Để đạt được điều này, bạn cần sử dụng thuộc tính HTML Accept.Thuộc tính này chỉ được sử dụng và đóng vai trò là bộ lọc để chọn đầu vào tệp từ hộp thoại đầu vào tệp.use the HTML accept attribute. This attribute is only used with and serves as a filter to select file inputs from the file input dialog box.

Làm thế nào để bạn đính kèm một tệp trong html?

Xác định trường chọn tệp và nút "Duyệt" để tải lên tệp.Để xác định trường chọn tệp cho phép chọn nhiều tệp, hãy thêm nhiều thuộc tính.Mẹo: Luôn thêm thẻ cho thực tiễn tiếp cận tốt nhất! defines a file-select field and a "Browse" button for file uploads. To define a file-select field that allows multiple files to be selected, add the multiple attribute. Tip: Always add the

Làm thế nào để bạn tải lên PNG trong HTML?

Cách chèn một hình ảnh trong HTML trong 6 bước dễ dàng..
Tải lên tệp hình ảnh ..
Truy cập thư mục chủ đề ..
Thêm thuộc tính IMG SRC vào hình ảnh ..
Đặt chiều rộng và chiều cao ..
Thêm một thuộc tính ALT ..
Lưu thay đổi..

Làm cách nào để đặt một hình ảnh vào hộp văn bản trong HTML?

Giải pháp 1. Bạn có thể sử dụng CSS cho việc này.Đặt hình ảnh nền.Bây giờ bạn sẽ có một hộp văn bản đẹp với biểu tượng nền và văn bản sẽ không được đặt trên biểu tượng.