search
HomeWeb Front-endHTML TutorialFile upload and download functions in HTML5

In website construction, file uploading and downloading are inevitable. The API provided in HTML5 has rich applications on the front end, which perfectly solves the compatibility issues of various browsers, so hurry up and get it!

FileList object and file object

The input[type="file"] tag in HTML has a multiple attribute, which allows the user to select multiple files. The FileList object represents the file selected by the user. list. Each file in this list is a file object.

Attributes of the file object:

  • name: file name, excluding path.

  • type : File type. Files of image type will all start with image/, which can be used to restrict uploading to only images.

  • size : File size. Additional operations can be performed based on file size.

  • lastModified: The time when the file was last modified.

<input><script>
    var elem = document.getElementById(&#39;files&#39;);
    elem.onchange = function (event) {        
    var files = event.target.files;       
     for (var i = 0; i < files.length; i++) {
     // 文件类型为 image 并且文件大小小于 200kb
            if(files[i].type.indexOf(&#39;image/&#39;) !== -1 && files[i].size < 204800){
                            console.log(files[i].name);
            }
        }
    }
    </script>

There is an accept attribute in input, which can be used to specify the file types that can be submitted through file upload.

accept="image/*" can be used to limit only the image formats allowed to be uploaded. However, there was a slow response problem under the Webkit browser, and it took several seconds for the file selection box to pop up.

The solution is to change the * wildcard character to the specified MIME type.

<input>

Blob object

The Blob object is equivalent to a container and can be used to store binary data. It has two attributes, the size attribute represents the byte length, and the type attribute represents the MIME type.

How to create

Blob objects can be created using the Blob() constructor.

var blob = new Blob(['hello'], {type:"text/plain"});

The first parameter in the Blob constructor is an array, which can store ArrayBuffer objects, ArrayBufferView objects, Blob objects and strings.

The Blob object can return a new Blob object through the slice() method.

var newblob = blob.slice(0,5, {type:"text/plain"});

The slice() method uses three parameters, all of which are optional. The first parameter represents the starting position of the binary data in the Blob object to be copied, the second parameter represents the end position of the copy, and the third parameter is the MIME type of the Blob object.

canvas.toBlob() can also create Blob objects. toBlob() uses three parameters, the first is the callback function, the second is the image type, the default is image/png, and the third is the image quality, the value is between 0 and 1.

var canvas = document.getElementById('canvas');
canvas.toBlob(function(blob){ console.log(blob); }, "image/jpeg", 0.5);

Download files

The Blod object can generate a network address through the window.URL object and combine it with the download attribute of the a tag to implement the file download function.

For example, download canvas as an image file.

var canvas = document.getElementById('canvas');
canvas.toBlob(function(blob){    // 使用 createObjectURL 生成地址,格式为 blob:null/fd95b806-db11-4f98-b2ce-5eb16b38ba36
    var url = URL.createObjectURL(blob);    var a = document.createElement('a');
    a.download = 'canvas';
    a.href = url;    // 模拟a标签点击进行下载
    a.click();    // 下载后告诉浏览器不再需要保持这个文件的引用了
    URL.revokeObjectURL(url);
});

You can also save the string as a text file with a similar method.

FileReader object

The FileReader object is mainly used to read files into memory and read the data in the file. Create a FileReader object through the constructor

var reader = new FileReader();

The object has the following methods:

  • abort: abort the read operation.

  • readAsArrayBuffer: Read the file content into the ArrayBuffer object.

  • readAsBinaryString: Read the file as binary data.

  • readAsDataURL: Read the file as a string in data: URL format.

  • readAsText: Read the file as text.

Upload image preview

A common application is to display the image through readAsDataURL() after the client uploads the image.

<input>File upload and download functions in HTML5<script>
    var elem = document.getElementById(&#39;files&#39;),
        img = document.getElementById(&#39;preview&#39;);
    elem.onchange = function () {        var files = elem.files,
            reader = new FileReader();        if(files && files[0]){
            reader.onload = function (ev) {
                img.src = ev.target.result;
            }
            reader.readAsDataURL(files[0]);
        }
    }</script>

However, there is a bug when uploading photos when taking photos vertically on some mobile phones, including Samsung and iPhone, and you will find that the photos are upside down. . . The solution will not be explained here. If you are interested, you can view: Solution for mobile image upload rotation and compression

Data backup and recovery

FileReader object's readAsText() can read the text of the file , combined with the function of Blob object downloading files, it is possible to back up the data export file to the local. When the data needs to be restored, upload the backup file through input, and use readAsText() to read the text and restore the data.

The code is similar to the above function. It will not be repeated here. For specific applications, please refer to: notepad

Base64 encoding

Added atob and btoa methods in HTML5 to support Base64 coding. Their names are also very simple, b to a and a to b, which represent encoding and decoding.

var a = "https://lin-xin.github.io";var b = btoa(a);var c = atob(b);console.log(a);     // https://lin-xin.github.ioconsole.log(b);     // aHR0cHM6Ly9saW4teGluLmdpdGh1Yi5pbw==console.log(c);     // https://lin-xin.github.io

The btoa method encodes the string a without changing the value of a and returns an encoded value.
atob method decodes the encoded string.

But the parameter contains Chinese characters, which exceeds the character range of 8-bit ASCII encoding, and the browser will report an error. Therefore, the Chinese needs to be encoded with encodeURIComponent first.

var a = "哈喽 世界";var b = btoa(encodeURIComponent(a));
var c = decodeURIComponent(atob(b));console.log(b);//JUU1JTkzJTg4JUU1JTk2JUJEJTIwJUU0JUI4JTk2JUU3JTk1JThDconsole.log(c);

The above is the detailed content of File upload and download functions in HTML5. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Beyond HTML: Essential Technologies for Web DevelopmentBeyond HTML: Essential Technologies for Web DevelopmentApr 26, 2025 am 12:04 AM

To build a website with powerful functions and good user experience, HTML alone is not enough. The following technology is also required: JavaScript gives web page dynamic and interactiveness, and real-time changes are achieved by operating DOM. CSS is responsible for the style and layout of the web page to improve aesthetics and user experience. Modern frameworks and libraries such as React, Vue.js and Angular improve development efficiency and code organization structure.

What are boolean attributes in HTML? Give some examples.What are boolean attributes in HTML? Give some examples.Apr 25, 2025 am 12:01 AM

Boolean attributes are special attributes in HTML that are activated without a value. 1. The Boolean attribute controls the behavior of the element by whether it exists or not, such as disabled disable the input box. 2.Their working principle is to change element behavior according to the existence of attributes when the browser parses. 3. The basic usage is to directly add attributes, and the advanced usage can be dynamically controlled through JavaScript. 4. Common mistakes are mistakenly thinking that values ​​need to be set, and the correct writing method should be concise. 5. The best practice is to keep the code concise and use Boolean properties reasonably to optimize web page performance and user experience.

How can you validate your HTML code?How can you validate your HTML code?Apr 24, 2025 am 12:04 AM

HTML code can be cleaner with online validators, integrated tools and automated processes. 1) Use W3CMarkupValidationService to verify HTML code online. 2) Install and configure HTMLHint extension in VisualStudioCode for real-time verification. 3) Use HTMLTidy to automatically verify and clean HTML files in the construction process.

HTML vs. CSS and JavaScript: Comparing Web TechnologiesHTML vs. CSS and JavaScript: Comparing Web TechnologiesApr 23, 2025 am 12:05 AM

HTML, CSS and JavaScript are the core technologies for building modern web pages: 1. HTML defines the web page structure, 2. CSS is responsible for the appearance of the web page, 3. JavaScript provides web page dynamics and interactivity, and they work together to create a website with a good user experience.

HTML as a Markup Language: Its Function and PurposeHTML as a Markup Language: Its Function and PurposeApr 22, 2025 am 12:02 AM

The function of HTML is to define the structure and content of a web page, and its purpose is to provide a standardized way to display information. 1) HTML organizes various parts of the web page through tags and attributes, such as titles and paragraphs. 2) It supports the separation of content and performance and improves maintenance efficiency. 3) HTML is extensible, allowing custom tags to enhance SEO.

The Future of HTML, CSS, and JavaScript: Web Development TrendsThe Future of HTML, CSS, and JavaScript: Web Development TrendsApr 19, 2025 am 12:02 AM

The future trends of HTML are semantics and web components, the future trends of CSS are CSS-in-JS and CSSHoudini, and the future trends of JavaScript are WebAssembly and Serverless. 1. HTML semantics improve accessibility and SEO effects, and Web components improve development efficiency, but attention should be paid to browser compatibility. 2. CSS-in-JS enhances style management flexibility but may increase file size. CSSHoudini allows direct operation of CSS rendering. 3.WebAssembly optimizes browser application performance but has a steep learning curve, and Serverless simplifies development but requires optimization of cold start problems.

HTML: The Structure, CSS: The Style, JavaScript: The BehaviorHTML: The Structure, CSS: The Style, JavaScript: The BehaviorApr 18, 2025 am 12:09 AM

The roles of HTML, CSS and JavaScript in web development are: 1. HTML defines the web page structure, 2. CSS controls the web page style, and 3. JavaScript adds dynamic behavior. Together, they build the framework, aesthetics and interactivity of modern websites.

The Future of HTML: Evolution and Trends in Web DesignThe Future of HTML: Evolution and Trends in Web DesignApr 17, 2025 am 12:12 AM

The future of HTML is full of infinite possibilities. 1) New features and standards will include more semantic tags and the popularity of WebComponents. 2) The web design trend will continue to develop towards responsive and accessible design. 3) Performance optimization will improve the user experience through responsive image loading and lazy loading technologies.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools