代码之家  ›  专栏  ›  技术社区  ›  Shantanu Gupta

如何使用javascript或jquery在客户机上创建文本文件

  •  1
  • Shantanu Gupta  · 技术社区  · 14 年前

    如何使用javascript或jquery在客户机上创建文本文件

    2 回复  |  直到 14 年前
        1
  •  4
  •   Varun    14 年前

    在IE和firefox上是可能的。。。但不知道它将如何工作在狩猎和克罗姆搜索相同。。。

    对于FF

    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    // Open the save file dialog
    var nsIFilePicker = Components.interfaces.nsIFilePicker;
    var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
    
    fp.init(window, "Save File...", nsIFilePicker.modeSave);
    //fp.appendFilters(nsIFilePicker.filterHTML);
    fp.appendFilter("HTML File","*.htm; *.html");
    fp.defaultString="data.htm";
    
    var rv = fp.show();
    if (rv == fp.returnCancel) return;
    
    if(rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace){
        // Open the file and write to it
        var file = fp.file;
        //var filePath = file.path+".htm";
        //  //file.initWithPath(filePath);
    
        if(file.exists() == false){//create as necessary
            file.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420 );
        }
        var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
                                              .createInstance( Components.interfaces.nsIFileOutputStream );
        outputStream.init( file, 0x04 | 0x08 | 0x20, 640, 0 );
        var result = outputStream.write( output, output.length );
        g.filename.value=file.path;
        outputStream.close();
        alert('File has been saved.' );
    }
    

    对于IE

    var w = window.frames.w;
    if( !w ) {
        w = document.createElement( 'iframe' );
        w.id = 'w';
        w.style.display = 'none';
        document.body.insertBefore( w );
        w = window.frames.w;
        if( !w ) {
            w = window.open( '', '_temp', 'width=100,height=100' );
            if( !w ) {
                window.alert( 'Sorry, could not create file.' );
                return false;
            }
        }
    }
    
    var d = w.document;
    d.open( 'text/xml', 'replace');
    d.charset = "UTF-8";
    
    d.write(JWPFormToHTML(f));
    d.close();
    var name= g.filename.value;
    
    if( d.execCommand( 'SaveAs', false , name ) )
    {
        g.filename.value=name;
        //document.getElementById("filename").value="";
        alert('File has been saved.' );
    }
    else
    {
        alert( 'The file has not been saved.\nIs there a problem?' );
    }
    w.close();
    return false;
    

    编辑

    在safari和chrome上也有 您必须创建一个签名的applet来创建读写文件,并使用相同的:P

        2
  •  0
  •   cspolton Abbia    14 年前

    不知道你到底需要什么,但由于无法写入文本文件(cookies除外),你能使用HTML 5 Web存储吗?它只在最新的浏览器中受支持,请参见下面的示例用法: http://davidwalsh.name/html5-storage