通过打开文件复制文本文件的文本内容

时间:2013-10-01 14:24:15

标签: javascript html filereader

我的项目类似于基于C ++网络的IDE,我正在处理它的打开按钮,它将打开一个文本文件并将文本附加到contenteditable div。当我点击我想要的choose file button

  1. 获取所选文本文件的内容,如剪贴板复制方式

  2. 将复制的文本附加到contenteditable div,就像粘贴它一样

    2.1提供了setCaret函数,该函数将在可信任div的开头设置插入位置

    2.2提供了pasteTextAtCaret功能,该功能将在当前插入位置开始粘贴事件

  3. 我希望它像复制和粘贴事件一样工作,因为这些事件不会导致我的代码出错并节省调试时间。

    function readSingleFile(evt) {
    
                var f = evt.target.files[0];
                console.log(f);
    
                if (!f) {
                    alert("Failed to load file");
                       return;
                } 
    
                if (f.name.indexOf('.txt') == -1) {
                    alert(f.name + " is not a valid text file.");
                    return;     
                }    
    
                var r = new FileReader();
                r.onload = function(e) { 
    
                setCaret(false, 0);
                        //copy here
                pasteTextAtCaret(copied_text);
    
    
    
              }
              r.readAsText(f);
    }
    
    function setCaret(colPosition, divPos) {
                alert('calllled');
                var range = document.createRange();
                var sel = window.getSelection();
                range.selectNodeContents($('#board')[divPos]);
                range.collapse(colPosition);
                sel.removeAllRanges();
                sel.addRange(range);//setting the caret position
    }    
    
    function pasteTextAtCaret(text) {
                alert('pasted');
                var sel, range;
                if (window.getSelection) {
                    sel = window.getSelection();
                    if (sel.getRangeAt && sel.rangeCount) {
                        range = sel.getRangeAt(0);
                        range.deleteContents();
    
                        var textNode = document.createTextNode(text);
                        range.insertNode(textNode);
    
                        range = range.cloneRange();
                        range.setStartAfter(textNode);
                        range.collapse(false);
                        sel.removeAllRanges();
                        sel.addRange(range);                    
    
                    }//if
                }//if 
    
                else if (document.selection && document.selection.type != "Control") {
                    document.selection.createRange().text = text;
                }//else if
    }
    
    document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
    

    http://jsfiddle.net/88vtR/26/

1 个答案:

答案 0 :(得分:0)

或者只是使用php

轻松一下
<?php
$file = "YourFile.txt";
$read = file_get_contents($file);
echo $read;
?>