JS操作本地文件
- 格式:pdf
- 大小:150.23 KB
- 文档页数:12
浏览器读取本地配置文件的方法浏览器读取本地配置文件的方法是一种常见且实用的技术,在开发和部署过程中因为很多原因需要在本地配置文件中定义一些参数和设置。
以下是几种流行的浏览器读取本地配置文件的方法:1. 使用JavaScript:通过JavaScript可以读取本地文件并将其内容加载到网页中。
你可以使用XMLHttpRequest对象或Fetch API来实现这个过程。
首先,你需要在网页中添加一个文件上传输入框,然后监听文件选择事件。
当用户选择了一个配置文件后,你可以读取文件内容并进行处理。
这种方法适用于简单的配置文件,但可能需要一些额外的代码来处理文件的解析和加载。
2. 使用HTML5本地存储:HTML5提供了一些本地存储功能,如LocalStorage和SessionStorage。
你可以将配置文件的内容保存在这些本地存储中,并在需要时从中读取。
这种方法相对简单,不需要额外的代码来处理文件读取和解析。
3. 使用浏览器插件:某些浏览器插件可以帮助你读取本地配置文件,并将其内容注入到网页中。
这种方法通常需要安装和配置插件,但可以实现更复杂的功能。
无论使用哪种方法,都需要注意安全性和隐私问题。
在读取本地配置文件时,确保只读取合法和可信任的文件,并避免读取敏感信息。
另外,为了提高用户体验,可以考虑将配置文件缓存到本地,减少文件读取的次数。
总结起来,浏览器读取本地配置文件的方法包括使用JavaScript、HTML5本地存储和浏览器插件。
选择合适的方法取决于你的需求和技术栈。
无论你选择哪种方法,都需要确保安全性和隐私问题,并提供良好的用户体验。
js访问本地文件的方法在JavaScript中,可以使用File API来访问本地文件。
下面是几种常见的方法:1. 使用<input type="file">元素:可以通过创建一个<input type="file">元素,并监听其change 事件来获取用户选择的本地文件。
一旦用户选择了文件,就可以通过FileReader来读取文件内容。
```html<input type="file" id="myFile">``````javascriptconst fileInput = document.getElementById("myFile");fileInput.addEventListener("change", function() {const file = fileInput.files[0];const reader = new FileReader();reader.onload = function(e) {const fileContent = e.target.result;// 处理文件内容};reader.readAsText(file);});```2. 使用fetch API:可以使用fetch API来异步加载本地文件。
使用相对路径指定文件的位置,并通过fetch函数发送GET请求来获取文件内容。
```javascriptfetch("path/to/file.txt").then(response => response.text()).then(fileContent => {// 处理文件内容}).catch(error => {console.error("Error:", error);});```3. 使用Node.js环境:如果你在Node.js环境中运行JavaScript,可以使用Node.js提供的fs模块来读取本地文件。
js下载⽂件到本地各种⽅法总结⼀、此⽅法⽕狐有些版本是不⽀持的window.location.href = 'https://*****.oss-cn-**/*********';⼆、为了解决⽕狐有些版本不⽀持,可以改成这种⽅式window.location='https://*****.oss-cn-**/*********';三、该⽅法IE和⽕狐都可以,url表⽰要下载的⽂件路径function(url){try {var elemIF = document.createElement("iframe");elemIF.src = url;elemIF.style.display = "none";document.body.appendChild(elemIF);} catch (e) {alert("下载异常!");}}四、form表单的形式downloadFile(url){var form=$("<form>");form.attr("style","display:none");form.attr("target","");form.attr("method","get");form.attr("action",url);$("body").append(form);form.submit();//表单提交}}五、a标签的⽅式function(url,name){var a = document.createElement("a");a.download = name + ".xls";a.href = url;$("body").append(a); // 修复firefox中⽆法触发clicka.click();$(a).remove();}六、假如后台给的⽂件流function (formData, url, name) {return new Promise((resolve, reject) => {var xhr = new XMLHttpRequest();xhr.open("POST", url, true); // 也可以使⽤POST⽅式,根据接⼝xhr.responseType = "blob"; // 返回类型blob// 定义请求完成的处理函数,请求前也可以增加加载框/禁⽤下载按钮逻辑xhr.onload = function () {// 请求完成if (this.status === 200) {// 返回200var blob = this.response;var reader = new FileReader();reader.readAsDataURL(blob); // 转换为base64,可以直接放⼊a表情hrefreader.onload = function (e) {// 转换完成,创建⼀个a标签⽤于下载var a = document.createElement("a");a.download = name + ".xls";a.href = e.target.result;$("body").append(a); // 修复firefox中⽆法触发clicka.click();resolve(200)$(a).remove();};}};// 发送ajax请求xhr.send(formData);})};)download.js源码)七、download.js(下⾯是七、download.js(下⾯是download.js源码//download.js v4.2, by dandavis; 2008-2016. [CCBY2] see /download.html for tests/usage// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling. // v4 adds AMD/UMD, commonJS, and plain browser support// v4.1 adds url download capability via solo URL argument (same domain/CORS only)// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors// https:///rndme/download(function (root, factory) {if (typeof define === 'function' && define.amd) {// AMD. Register as an anonymous module.define([], factory);} else if (typeof exports === 'object') {// Node. Does not work with strict CommonJS, but// only CommonJS-like environments that support module.exports,// like Node.module.exports = factory();} else {// Browser globals (root is window)root.download = factory();}}(this, function () {return function download(data, strFileName, strMimeType) {var self = window, // this script is only for browsers anyway...defaultMime = "application/octet-stream", // this default mime also triggers iframe downloadsmimeType = strMimeType || defaultMime,payload = data,url = !strFileName && !strMimeType && payload,anchor = document.createElement("a"),toString = function(a){return String(a);},myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),fileName = strFileName || "download",blob,reader;myBlob= myBlob.call ? myBlob.bind(self) : Blob ;if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callbackpayload=[payload, mimeType];mimeType=payload[0];payload=payload[1];}if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argumentfileName = url.split("/").pop().split("?")[0];anchor.href = url; // assign href prop to temp anchorif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:var ajax=new XMLHttpRequest();ajax.open( "GET", url, true);ajax.responseType = 'blob';ajax.onload= function(e){download(e.target.response, fileName, defaultMime);};setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:return ajax;} // end if valid url?} // end if url?//go ahead and download dataURLs right awayif(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)){if(payload.length > (1024*1024*1.999) && myBlob !== toString ){payload=dataUrlToBlob(payload);mimeType=payload.type || defaultMime;}else{return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :saver(payload) ; // everyone else can save dataURLs un-processed}}//end if dataURL passed?blob = payload instanceof myBlob ?payload :new myBlob([payload], {type: mimeType}) ;function dataUrlToBlob(strUrl) {var parts= strUrl.split(/[:;,]/),type= parts[1],decoder= parts[2] == "base64" ? atob : decodeURIComponent,binData= decoder( parts.pop() ),mx= binData.length,i= 0,uiArr= new Uint8Array(mx);for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);return new myBlob([uiArr], {type: type});}function saver(url, winMode){if ('download' in anchor) { //html5 A[download]anchor.href = url;anchor.setAttribute("download", fileName);anchor.className = "download-js-link";anchor.innerHTML = "downloading...";anchor.style.display = "none";document.body.appendChild(anchor);setTimeout(function() {anchor.click();document.body.removeChild(anchor);if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}}, 66);return true;}// handle non-a[download] safari as best we can:if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(erAgent)) {url=url.replace(/^data:([\w\/\-\+]+)/, defaultMime);if(!window.open(url)){ // popup blocked, offer direct download:if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; } }return true;}//do iframe dataURL download (old ch+FF):var f = document.createElement("iframe");document.body.appendChild(f);if(!winMode){ // force a mime that will download:url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);}f.src=url;setTimeout(function(){ document.body.removeChild(f); }, 333);}//end saverif (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)return navigator.msSaveBlob(blob, fileName);}if(self.URL){ // simple fast and modern way using Blob and URL:saver(self.URL.createObjectURL(blob), true);}else{// handle non-Blob()+non-URL browsers:if(typeof blob === "string" || blob.constructor===toString ){try{return saver( "data:" + mimeType + ";base64," + self.btoa(blob) );}catch(y){return saver( "data:" + mimeType + "," + encodeURIComponent(blob) );}}// Blob but not URL support:reader=new FileReader();reader.onload=function(e){saver(this.result);};reader.readAsDataURL(blob);}return true;}; /* end download() */}));⽤法:download(fileUrl,name,"video/mp4");具体更多的⽤法请参考官⽹,注意 download.js第⼀个参数 是数据流,不是像oss那样的⽂件地址。
js利⽤FileReader读取本地⽂件或者blob⽅式⽬录FileReader读取本地⽂件或blob⼀、FileReader的使⽤⼆、FileReader的⽅法三、FileReader的属性四、FileReader的事件使⽤FileReader读取本地磁盘⽂件问题FileReader读取本地⽂件或blobFileReader对象提供了异步读取存储在⽤户计算机上的⽂件的内容,使⽤ File或 Blob 对象指定要读取的⽂件或数据,FileReader接⼝提供了读取⽂件的⽅法和包含读取结果的事件模型。
⼀、FileReader的使⽤注意:如果需要兼容低版本的浏览器,需要判断⼀下FileReader对象是否存在。
if (window.FileReader) {let reader = new FileReader();} else {console.log('你的浏览器不⽀持读取⽂件');}⼆、FileReader的⽅法三、FileReader的属性FileReader.error(只读):⼀个异常,表⽰在读取⽂件时发⽣的错误FileReader.readyState(只读):表⽰FileReader状态的数字值状态名描述0EMPTY未加载任何数据1LOADING数据加载中2DONE数据加载完毕FileReader.result(只读):读取完⽂件的内容,该属性在数据读取完成之后才有效,⽂件内容的格式是由读取的⽅法所决定。
四、FileReader的事件FileReader.onabort:该事件是中⽌读取的时候触发。
FileReader.onerror:该事件是读取发⽣错误的时候触发。
FileReader.onload:该事件是读取完成的时候触发。
FileReader.onloadstart:该事件是读取操作刚开始的时候触发。
FileReader.onloadend:该事件是读取结束的时候触发(失败和成功的时候都会触发)。
使⽤JavaScript保存⽂本⽂件到本地的两种⽅法⼀段使⽤javascript保存⽂件的代码。
这⾥⽅法可以保存指定id元素下的所有html内容;不过这个⽅法只⽀持IE浏览器。
function createHtml() {try {save_record("index1", $("#yhtcprediv").html());} catch (e) {alert(e);}}function save_record(filename, content) {//打开新窗⼝保存var winRecord = window.open('about:blank', '_blank', 'top=500');winRecord.document.open("text/html", "utf-8");winRecord.document.write(" <div class=\"introBox section package boxBg02\" id=\"yhtcprediv\">" + content + "</div>");winRecord.document.execCommand("SaveAs", true, filename + ".html");winRecord.close();}简单好⽤的JS保存⽂本⽂件到本地<!DOCTYPE html><html><head><meta charset="utf-8" /><title></title><link rel="stylesheet" href="///msui/sm/0.6.2/css/sm.min.css" rel="external nofollow" ><script type='text/javascript' src='///sj/lib/zepto/zepto.min.js' charset='utf-8'></script><script type='text/javascript' src='///msui/sm/0.6.2/js/sm.min.js' charset='utf-8'></script></head><body><!DOCTYPE html><html><head><meta charset="utf-8"><meta name="description" content="A simple HTML5 Template"><meta name="author" content="dron"><meta name="viewport" content="width=device-width, height=device-height, user-scalable=no, initial-scale=1.0, maximum-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><title>保存⽂本⽂件到本地</title><link href="/static/bootstrap/3.3.6/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet"><script src="/static/jquery/2.2.3/jquery.min.js"></script><script src="/static/bootstrap/3.3.6/js/bootstrap.min.js"></script><style>.container-fluid{ margin-top: 20px; }</style></head><body><script>void function(a){a.siteToolbar=function b(a){b.setting=a||{}},document.write('<div class="ucren-toolbar-placeholder" style="height:3000px;"></div><scri'+'pt src="///ucren-toolbar/scripts/main.js"><\/script>')}(this);siteToolbar();</script><div class="container-fluid"><div class="row"><div class="col-md-3"><div class="form-group"><label>⽂件内容</label><textarea class="form-control" rows="4" id="content">测试⽂本,你可以随便修改,完事后点保存。
js操作file实例<!DOCTYPE html><html><head><title>JSFileReader</title><meta charset="utf-8" ></head><body><input accept="image/*" type="file" name="fileImg" id="fileImg" /><input type="button" onclick="readAsDataURL()" value="readAsDataURL"><input type="button" onclick="readAsBinaryString()" value="readAsBinaryString"><br><br> <input accept="text/*" type="file" name="fileTxt" id="fileTxt" /><input type="button" onclick="readAsArrayBuffer()" value="readAsArrayBuffer"><input type="button" onclick="readAsText()" value="readAsText"><br><br><input type="file" name="file" id="file" multiple /><input type="button" onclick="readAttr()" value="readAttr"><br><br><input type="button" onclick="saveTXT()" value="saveTXT"><br><br><div id="result"></div><script type="text/javascript">var imgs = document.getElementById('fileImg');var txts = document.getElementById('fileTxt');var files = document.getElementById('file');var result = document.getElementById('result');if (typeof FileReader == 'undefined') {img.disabled = true;txt.disabled = true;file.disabled = true;alert('您的浏览器太⽼了');}else {var reader = new FileReader();}//以DataURL格式读取⽂件内容function readAsDataURL(){img = imgs.files[0];if (typeof img == 'undefined') {alert('选择对应⽂件');return;}if (!/image\/\w+/.test(img.type)) {alert('not image');return;}reader.readAsDataURL(img);console.log('reader-------------',reader)reader.onload = function (e){console.log(e.target=== this)result.innerHTML += "<img src='"+this.result+"'' />";}}//以⼆进制格式读取⽂件内容function readAsBinaryString(){img = imgs.files[0];if (typeof img == 'undefined') {alert('选择对应⽂件');return;}if (!/image\/\w+/.test(img.type)) {alert('not img');return;}reader.readAsBinaryString(img);reader.onload = function (e){console.log("e.target",e.target)result.innerHTML += this.result;}}function readAsArrayBuffer(){txt = txts.files[0];if (typeof txt == 'undefined') {alert('选择对应⽂件');return;}if (!/text\/\w+/.test(txt.type)) {alert('not txt');return;}reader.readAsArrayBuffer(txt);console.log("reader",reader)reader.onload = function (e){console.log("e.target",e.target)result.innerHTML += this.result.byteLength+'<br>'+ab2str(this.result);}}// ArrayBuffer转为字符串,参数为ArrayBuffer对象function ab2str(buf) {/*Int8Array:8位有符号整数,长度1个字节。
js获取本地上传的⽂件(图⽚和视频)的宽⾼和⼤⼩选择的⽂件类型 e.target.files[0].type 值/*** e.target.files[0].type的结果* .PSD ⽂件 ""* .psd ⽂件 ""* .pdf ⽂件 "application/pdf"* .PNG ⽂件 "image/png"* .png ⽂件 "image/png"* .JPEG ⽂件 "image/jpeg"* .jpg ⽂件 "image/jpeg"*/1. 不限制上传的图像或视频的格式:/** 不限制上传的图像或视频的格式 */<input type="file" accept="image/*" multiple /><input type="file" accept="video/*" multiple />2. 显⽰上传的⽂件类型在⼀定范围内:/** 限制上传的⽂件类型在⼀定范围内 */<input type="file" accept="image/png, image/jpeg" multiple /><input type="file" accept="image/png, image/jpeg, video/mp4" multiple />⼀、获取选择的本地的图⽚的宽⾼/*** 上传图⽚* @param e 选择的⽂件对象* @param progressCallback 进度回调* @returns {Promise<any>}*/function uploadImageFile(e, progressCallback) {return new Promise(function (resolve, reject) {var fileObj = e.target.files[0];if (fileObj.type != "image/png" && fileObj.type != "image/jpeg") {console.log("请上传正确的⽂件类型");reject("");}if (fileObj.size > 5*1024*1024) {console.log("图⽚⽂件过⼤");reject("");}// 获取上传的图⽚的宽⾼var reader = new FileReader();reader.readAsDataURL(fileObj);reader.onload = function (evt) {var replaceSrc = evt.target.result;var imageObj = new Image();imageObj.src = replaceSrc;imageObj.onload = function () {console.log(imageObj.width + imageObj.height);// 执⾏上传的⽅法,获取外⽹路径,上传进度等resolve();};};});}⼆、获取上传的本地视频的宽⾼/*** 上传视频* @param e 选择的⽂件对象* @param progressCallback 进度回调* @returns {Promise<any>}*/function uploadVideoFile(e, progressCallback) {return new Promise(function (resolve, reject) {var fileObj = e.target.files[0];if (fileObj.type !== "video/mp4") {console.log("请上传正确的⽂件类型");reject("");}if (fileObj.size > 200*1024*1024) {console.log("视频⽂件过⼤");reject("");}// 获取上传的视频的宽⾼var videoUrl = URL.createObjectURL(fileObj);var videoObj = document.createElement("video");videoObj.onloadedmetadata = function (evt) {URL.revokeObjectURL(videoUrl);console.log(videoObj.videoWidth + videoObj.videoHeight);// 执⾏上传的⽅法,获取外⽹路径,上传进度等resolve();};videoObj.src = videoUrl;videoObj.load();});}三、限制上传的PDF⽂件/*** 上传PDF* @param e 选择的⽂件对象* @param progressCallback 进度回调* @returns {Promise<any>}*/function uploadPdfFile(e, progressCallback) {return new Promise(function (resolve, reject) {var fileObj = e.target.files[0];if (fileObj.type !== "application/pdf") {console.log("请上传正确的⽂件类型");reject("");}if (fileObj.size > 60*1024*1024) {console.log("PDF⽂件过⼤");reject("");}// 执⾏上传的⽅法,获取外⽹路径,上传进度等resolve();});}参考:。
js读写本地⽂件js读写本地⽂件1. <script language="javascript" type="text/javascript">2. /*3. object.OpenTextFile(filename[, iomode[, create[, format]]])4. 参数5. object6. 必选项。
object 应为 FileSystemObject 的名称。
7. filename8. 必选项。
指明要打开⽂件的字符串表达式。
9. iomode10. 可选项。
可以是三个常数之⼀:ForReading 、 ForWriting 或 ForAppending 。
11. create12. 可选项。
Boolean 值,指明当指定的 filename 不存在时是否创建新⽂件。
如果创建新⽂件则值为 True ,如果不创建则为 False 。
如果忽略,则不创建新⽂件。
13. format14. 可选项。
使⽤三态值中的⼀个来指明打开⽂件的格式。
如果忽略,那么⽂件将以 ASCII 格式打开。
15. 设置16. iomode 参数可以是下列设置中的任⼀种:17. 常数值描述18. ForReading 1 以只读⽅式打开⽂件。
不能写这个⽂件。
19. ForWriting 2 以写⽅式打开⽂件20. ForAppending 8 打开⽂件并从⽂件末尾开始写。
21.22. format 参数可以是下列设置中的任⼀种:23. 值描述24. TristateTrue 以 Unicode 格式打开⽂件。
25. TristateFalse 以 ASCII 格式打开⽂件。
26. TristateUseDefault 使⽤系统默认值打开⽂件。
27. */28.29. //读⽂件30. function readFile(filename){31. var fso = new ActiveXObject("Scripting.FileSystemObject");32. var f = fso.OpenTextFile(filename,1);33. var s = "";34. while (!f.AtEndOfStream)35. s += f.ReadLine()+"\n";36. f.Close();37. return s;38. }39.40. //写⽂件41. function writeFile(filename,filecontent){42. var fso, f, s ;43. fso = new ActiveXObject("Scripting.FileSystemObject");44. f = fso.OpenTextFile(filename,8,true);45. f.WriteLine(filecontent);46. f.Close();47. alert('ok');48. }49.50. </script>51. <html>52. <input type="text" id="in" name="in" />53. <input type="button" value="Write!" onclick="writeFile('c:/12.txt',document.getElementById('in').value);"/><br><br>54. <input type="button" value="Read!" onclick="document.getElementById("__content").value=readFile('/090917/123,1282,6534044,0055. <textarea id="show" name="show" cols="100" rows="20" >56. </textarea>57. </html>。
js 在本地json文件追加并保存数据的方法在JavaScript中,可以通过使用File API和JSON.stringify()方法将数据追加到本地JSON文件并保存。
以下是一个实现这个功能的例子:首先,我们需要在HTML页面中添加一个用于上传JSON文件的input元素和一个用于保存按钮的按钮元素。
```html<!DOCTYPE html><html><head><title>追加保存数据到本地JSON文件</title></head><body><input type="file" id="json-file" accept=".json"><button id="save-button">保存</button><script src="app.js"></script></body></html>```接下来,在一个名为app.js的文件中编写JavaScript代码来处理上传文件和保存按钮的事件。
```javascript// 获取上传的JSON文件const fileInput = document.getElementById('json-file'); fileInput.addEventListener('change', handleFileUpload); function handleFileUpload(event) {const file = event.target.files[0];const reader = new FileReader();reader.onload = function(event) {const content = event.target.result;const jsonData = JSON.parse(content);// 在这里处理数据// 追加和保存数据appendAndSaveData(jsonData);}reader.readAsText(file);}// 追加和保存数据function appendAndSaveData(data) {// 在这里追加数据// 将数据保存到本地JSON文件const serializedData = JSON.stringify(data);const blob = new Blob([serializedData], { type:'application/json' });const saveButton = document.getElementById('save-button'); saveButton.addEventListener('click', function() {saveAs(blob, 'data.json');});}```在上面的代码中,我们首先通过FileReader对象读取用户上传的JSON文件。
JS实现打开本地⽂件或⽂件夹javascript有个特殊的对象ActiveXObject,通过它可以访问windows的本地⽂件系统和应⽤程序function openFileIIs(filename){try{var obj=new ActiveXObject("wscript.shell");if(obj){obj.Run("\""+filename+"\"", 1, false );//obj.run("osk");/*打开屏幕键盘*///obj.Run('"'+filename+'"');obj=null;}}catch(e){alert("请确定是否存在该盘符或⽂件");}}如果new ActiveXObject("WScript.Shell")创建失败应这样处理Javascript中使⽤new ActiveXObject("WScript.Shell")创建对象,出现:Automation服务器不能创建对象的错误,其原因有⼀、组件未注册,可以采⽤以下⽅法:开始-》运⾏-》regsvr32 c:\WINDOWS\system32\shell32.dll开始-》运⾏-》regsvr32 c:\WINDOWS\system32\WSHom.Ocx开始-》运⾏-》regsvr32 c:\WINDOWS\system32\scrrun.dll如果提⽰缺少那个dll或ocx,那么就去⽹上下载吧或去其他电脑上拷贝⼆、浏览器设置(本⽅法在IE6上通过),可以采⽤以下⽅法:⼯具-》Internet选项-》安全-》受信任的站点-》站点-》取消下⽅要求安全验证的复选框,并将你的⽹址添进去,确定,再选上要求验证的复选框。
一、功能实现核心:FileSystemObject对象要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程使用FileSystemObject对象进行编程很简单,一般要经过如下的步骤:创建FileSystemObject对象、应用相关方法、访问对象相关属性。
(一)创建FileSystemObject对象创建FileSystemObject对象的代码只要1行:var fso=new ActiveXObject("Scripting.FileSystemObject");上述代码执行后,fso就成为一个FileSystemObject对象实例。
(二)应用相关方法创建对象实例后,就可以使用对象的相关方法了。
比如,使用CreateTextFile方法创建一个文本文件:var fso=new ActiveXObject("Scripting.FileSystemObject");var f1=fso.createtextfile("c:\\myjstest.txt",true");(三)访问对象相关属性要访问对象的相关属性,首先要建立指向对象的句柄,这就要通过get系列方法实现:GetDrive负责获取驱动器信息,GetFolder负责获取文件夹信息,GetFile负责获取文件信息。
比如,指向下面的代码后,f1就成为指向文件c:\test.txt的句柄:var fso=new ActiveXObject("Scripting.FileSystemObject");var f1=fso.GetFile("c:\\myjstest.txt");然后,使用f1访问对象的相关属性。
比如:var fso=new ActiveXObject("Scripting.FileSystemObject");var f1=fso.GetFile("c:\\myjstest.txt");alert("File last modified:"+f1.DateLastModified);执行上面最后一句后,将显示c:\myjstest.txt的最后修改日期属性值。
但有一点请注意:对于使用create方法建立的对象,就不必再使用get方法获取对象句柄了,这时直接使用create方法建立的句柄名称就可以:var fso=new ActiveXObject("Scripting.FileSystemObject");var f1=fso.createtextfile("c:\\myjstest.txt",true");alert("File last modified:"+f1.DateLastModified);三、操作驱动器(Drives)使用FileSystemObject对象来编程操作驱动器(Drives)和文件夹(Folders)很容易,这就象在Windows 文件浏览器中对文件进行交互操作一样,比如:拷贝、移动文件夹,获取文件夹的属性。
(一)Drives对象属性Drive对象负责收集系统中的物理或逻辑驱动器资源内容,它具有如下属性:l TotalSize:以字节(byte)为单位计算的驱动器大小。
l AvailableSpace或FreeSpace:以字节(byte)为单位计算的驱动器可用空间。
l DriveLetter:驱动器字母。
l DriveType:驱动器类型,取值为:removable(移动介质)、fixed(固定介质)、network(网络资源)、CD-ROM或者RAM盘。
l SerialNumber:驱动器的系列码。
l FileSystem:所在驱动器的文件系统类型,取值为FAT、FAT32和NTFS。
l IsReady:驱动器是否可用。
l ShareName:共享名称。
l VolumeName:卷标名称。
l Path和RootFolder:驱动器的路径或者根目录名称。
(二)Drive对象操作例程下面的例程显示驱动器C的卷标、总容量和可用空间等信息:var fso,drv,s="";fso=new ActiveXObject("Scripting.FileSystemObject");drv=fso.GetDrive(fso.GetDriveName("c:\\"));s+="Drive C:"+"-";s+=drv.VolumeName+"\n";s+="Total Space:"+drv.TotalSize/1024;s+="Kb"+"\n";s+="Free Space:"+drv.FreeSpace/1024;s+="Kb"+"\n";alert(s);四、操作文件夹(Folders)涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。
Folder对象操作例程:下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作:var fso,fldr,s="";//创建FileSystemObject对象实例fso=new ActiveXObject("Scripting.FileSystemObject");//获取Drive对象fldr=fso.GetFolder("c:\\");//显示父目录名称alert("Parent folder name is:"+fldr+"\n");//显示所在drive名称alert("Contained on drive"+fldr.Drive+"\n");//判断是否为根目录if(fldr.IsRootFolder)alert("This is the root folder.");elsealert("This folder isn't a root folder.");alert("\n\n");//创建新文件夹fso.CreateFolder("C:\\Bogus");alert("Created folder C:\\Bogus"+"\n");//显示文件夹基础名称,不包含路径名alert("Basename="+fso.GetBaseName("c:\\bogus")+"\n");//删除创建的文件夹fso.DeleteFolder("C:\\Bogus");alert("Deleted folder C:\\Bogus"+"\n");五、操作文件(Files)对文件进行的操作要比以上介绍的驱动器(Drive)和文件夹(Folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。
下面分别详细介绍。
(一)创建文件一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。
第一种是使用CreateTextFile方法。
代码如下:var fso,f1;fso=new ActiveXObject("Scripting.FileSystemObject");f1=fso.CreateTextFile("c:\\testfile.txt",true);第二种是使用OpenTextFile方法,并添加上ForWriting属性,ForWriting的值为2。
代码如下:var fso,ts;var ForWriting=2;fso=new ActiveXObject("Scripting.FileSystemObject");ts=fso.OpenTextFile("c:\\test.txt",ForWriting,true);第三种是使用OpenAsTextStream方法,同样要设置好ForWriting属性。
代码如下:var fso,f1,ts;var ForWriting=2;fso=new ActiveXObject("Scripting.FileSystemObject");fso.CreateTextFile("c:\\test1.txt");f1=fso.GetFile("c:\\test1.txt");ts=f1.OpenAsTextStream(ForWriting,true);二、JavaScript中OpenTextFile函数方法是打开指定的文件并返回一个TextStream对象,可以通过这个对象对文件进行读、写或追加。
使用方法:三、object.OpenTextFile(filename[,iomode[,create[,format]]])四、其中object是必选项。
object应为FileSystemObject的名称。
filename是必选项。
指明要打开文件的字符串表达式。
iomode是可选项。
可以是三个常数之一:ForReading、ForWriting或ForAppending。
create是可选项。
Boolean值,指明当指定的filename不存在时是否创建新文件。
如果创建新文件则值为True,如果不创建则为False。
如果忽略,则不创建新文件。
format是可选项。
使用三态值中的一个来指明打开文件的格式。
如果忽略,那么文件将以ASCII格式打开。
iomode参数可以是下列设置中的任一种:常数值描述ForReading1以只读方式打开文件。
不能写这个文件。
ForWriting2以写方式打开文件ForAppending8打开文件并从文件末尾开始写。
五、format参数可以是下列设置中的任一种:值描述TristateTrue以Unicode格式打开文件。