Reading and saving files with JavaScript
Because Google does not yet provide the function of synchronizing plug-in data, importing and exporting plug-in configurations must deal with files. For security reasons, only IE provides APIs for accessing files; but with the arrival of HTML 5, other browsers have also supported it.
First let’s read the file. W3C provides some File APIs, the most important of which is the FileReader class.
First list the HTML tags that need to be used:
##
<input type="file" id="file" onchange="handleFiles(this.files)"/>When a file is selected, it will The list containing the file (a FileList object) is passed as a parameter to the handleFiles() function. This FileList object is similar to an array, you can know the number of files, and its elements are File objects. From this File object, attributes such as name, size, lastModifiedDate and type can be obtained. Pass this File object to the reading method of the FileReader object to read the file. FileReader has 4 reading methods: readAsArrayBuffer(file): Read the file as ArrayBuffer. readAsBinaryString(file): Read the file as a binary string readAsDataURL(file): Read the file as a Data URL readAsText(file, [encoding] ): Read the file as text, the default encoding value is 'UTF-8' In addition, the abort() method can stop reading the file. The FileReader object still needs to be processed after reading the file. In order not to block the current thread, the API adopts an event model, and you can register these events: onabort: triggered when interrupted onerror: triggered when an error occurs onload: file read successfully Triggered when fetching is completed onloadend: Triggered when the file is read, regardless of failure onloadstart: Triggered when the file starts to be read onprogress: When the file is read, Trigger periodically With these methods in place, you can process files. Read file Let’s try reading a text file first:
function handleFiles(files) { if (files.length) { var file = files[0]; var reader = new FileReader(); if (/text/w+/.test(file.type)) { reader.onload = function() { $('<pre class="brush:php;toolbar:false">' + this.result + '').appendTo('body'); } reader.readAsText(file); } } }
<span style="font-family: Arial, Helvetica, sans-serif;">這里的this.result實(shí)際上就是reader.result,也就是讀取出來(lái)的文件內(nèi)容。</span>Test it and you will find that the content of this file is added to the web page. If you are using Chrome, you must put the web page on the server or in a plug-in. The file protocol will fail. Let’s try the picture again, because the browser can directly display the picture of the Data URI protocol, so I will add the picture this time:
function handleFiles(files) { if (files.length) { var file = files[0]; var reader = new FileReader(); if (/text/w+/.test(file.type)) { reader.onload = function() { $('<pre class="brush:php;toolbar:false">' + this.result + '').appendTo('body'); } reader.readAsText(file); } else if(/image/w+/.test(file.type)) { reader.onload = function() { $('
<input type="file" id="files" multiple="" onchange="handleFiles(this.files)"/>In this way, handleFiles() needs to traverse and process files. If you only want to read part of the data, the File object also has webkitSlice() or mozSlice() methods for generating Blob objects. This object can be read by FileReader in the same way as the File object. These two methods receive 3 parameters: the first parameter is the starting position; the second parameter is the end position, if omitted, it will read to the end of the file; the third parameter is the content type. For examples, please refer to "Reading local files in JavaScript". Of course, in addition to importing data and displaying files, it can also be used for AJAX upload. For code, please refer to "Using files from web applications". Save File Actually File API: Writer provides 4 interfaces, but currently only some browsers (Chrome 8+ and Firefox 4+) implement BlobBuilder, and the other interfaces are not available . For unsupported browsers, you can use BlobBuilder.js and FileSaver.js to gain support. I researched it and discovered the secret. BlobBuilder can create a Blob object. Pass this Blob object to the URL.createObjectURL() method to get an object URL. And this object URL is the download address of this Blob object. After getting the download address, create an a element, assign the download address to the href attribute, and assign the file name to the download attribute (Chrome 14+ supports). Then create a click event and hand it over to the a element for processing, which will cause the browser to start downloading the Blob object. Finally, use URL.revokeObjectURL() to release the object URL and notify the browser that it no longer needs to reference this file. The following is a simplified code:
var BlobBuilder = BlobBuilder || WebKitBlobBuilder || MozBlobBuilder; var URL = URL || webkitURL || window; function saveAs(blob, filename) { var type = blob.type; var force_saveable_type = 'application/octet-stream'; if (type && type != force_saveable_type) { // 強(qiáng)制下載,而非在瀏覽器中打開 var slice = blob.slice || blob.webkitSlice || blob.mozSlice; blob = slice.call(blob, 0, blob.size, force_saveable_type); } var url = URL.createObjectURL(blob); var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a'); save_link.href = url; save_link.download = filename; var event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); save_link.dispatchEvent(event); URL.revokeObjectURL(url); } var bb = new BlobBuilder; bb.append('Hello, world!'); saveAs(bb.getBlob('text/plain;charset=utf-8'), 'hello world.txt');When testing, you will be prompted to save a text file. Chrome needs to put the web page on the server or in a plug-in.
附:寫文件工具類(干貨)
/** * 寫文件 * @param fileName 文件名 * @param data 文件流 * @param path 寫入路徑 * @return boolean */ public static boolean writeFile(String fileName,String data,String path) { try { // System.out.println("fileContent:" + data); File file = new File(path + fileName); if(!file.exists()){ file.createNewFile(); } FileOutputStream outStream = new FileOutputStream(file); outStream.write(data.getBytes()); outStream.flush(); outStream.close(); outStream = null; return(true); } catch (Exception e) { e.printStackTrace(); return(false); } }
美文美圖
?
以上就是JavaScript進(jìn)階(六)用JavaScript讀取和保存文件的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Java and JavaScript are different programming languages, each suitable for different application scenarios. Java is used for large enterprise and mobile application development, while JavaScript is mainly used for web page development.

JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

The following points should be noted when processing dates and time in JavaScript: 1. There are many ways to create Date objects. It is recommended to use ISO format strings to ensure compatibility; 2. Get and set time information can be obtained and set methods, and note that the month starts from 0; 3. Manually formatting dates requires strings, and third-party libraries can also be used; 4. It is recommended to use libraries that support time zones, such as Luxon. Mastering these key points can effectively avoid common mistakes.

JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScripthassevenfundamentaldatatypes:number,string,boolean,undefined,null,object,andsymbol.1)Numbersuseadouble-precisionformat,usefulforwidevaluerangesbutbecautiouswithfloating-pointarithmetic.2)Stringsareimmutable,useefficientconcatenationmethodsf

Event capture and bubble are two stages of event propagation in DOM. Capture is from the top layer to the target element, and bubble is from the target element to the top layer. 1. Event capture is implemented by setting the useCapture parameter of addEventListener to true; 2. Event bubble is the default behavior, useCapture is set to false or omitted; 3. Event propagation can be used to prevent event propagation; 4. Event bubbling supports event delegation to improve dynamic content processing efficiency; 5. Capture can be used to intercept events in advance, such as logging or error processing. Understanding these two phases helps to accurately control the timing and how JavaScript responds to user operations.

Java and JavaScript are different programming languages. 1.Java is a statically typed and compiled language, suitable for enterprise applications and large systems. 2. JavaScript is a dynamic type and interpreted language, mainly used for web interaction and front-end development.
