菜鸟教程小白 发表于 2022-12-13 04:23:18

javascript - Phonegap FileReader readAsText 返回 null 但 readAsDataURL 有效


                                            <p><p>我正在使用 Phonegap 下载存档,解压缩,然后读取文件。在我尝试将文件作为文本读取之前,一切正常。如果我使用 <code>readAsDataURL()</code> 那么我会得到一大堆东西记录到控制台。 </p>

<pre><code>function( file ) {
    console.log(file);
    var reader = new FileReader();
    reader.onloadend = function( evt ) {
      console.log( evt.target.result );
    };                     
    reader.readAsDataURL( file );
}
</code></pre>

<p>如果我使用 <code>readAsText()</code> 我会得到 <code>null</code>。文件范围从 300KB 到 1.4MB,但所有文件在控制台中都返回 <code>null</code>。</p>

<pre><code>reader.readAsText( file );         
</code></pre>

<p>为什么一个函数会返回一些东西而另一个是空的?它可以阅读的文本大小有限制吗?</p>

<p>这是我在创建 <code>reader</code> 之前记录的 <code>file</code> 对象,我将函数应用到该对象(我已经缩短了文件名):</p>

<pre><code>{
    &#34;name&#34;:&#34;categories.json&#34;,
    &#34;fullPath&#34;:&#34;/var/mobile/.../Documents/data/file.json&#34;,
    &#34;type&#34;:null,
    &#34;lastModifiedDate&#34;:1380535318000,
    &#34;size&#34;:382456
}
</code></pre>

<p>这是 <code>readAsText()</code> 的 evt 对象:</p>

<pre><code>{
    &#34;type&#34;:&#34;loadend&#34;,
    &#34;bubbles&#34;:false,
    &#34;cancelBubble&#34;:false,
    &#34;cancelable&#34;:false,
    &#34;lengthComputable&#34;:false,
    &#34;loaded&#34;:0,
    &#34;total&#34;:0,
    &#34;target&#34;:{
      &#34;fileName&#34;:&#34;/var/mobile/.../Documents/data/file.json&#34;,
      &#34;readyState&#34;:2,
      &#34;result&#34;:&#34;null&#34;,
      &#34;error&#34;:null,
      &#34;onloadstart&#34;:null,
      &#34;onprogress&#34;:null,
      &#34;onload&#34;:null,
      &#34;onerror&#34;:null,
      &#34;onabort&#34;:null
    }
}
</code></pre>

<p><strong>更新</strong>:我在文件 API 的 W3C 规范中看到,只有在发生错误时才会将结果设置为 null。但我尝试添加一个 <code>reader.onerror()</code> 函数,但没有被调用。</p>

<blockquote>
<p>If an error occurs during reading the blob parameter, set readyState
to DONE and set result to null. Proceed to the error steps.</p>

<p><a href="http://www.w3.org/TR/FileAPI/#dfn-readAsText" rel="noreferrer noopener nofollow">http://www.w3.org/TR/FileAPI/#dfn-readAsText</a></p>
</blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可能一直在抓取文件条目而不是文件对象。假设文件实际上是 fileEntry,试试这个:</p>

<pre><code>var
    fileEntry = file, //for example clarity - assumes file from OP&#39;s file param
    reader = new FileReader()
;

fileEntry.file( doSomethingWithFileObject );//gets the fileObject passed to it

function doSomethingWithFileObject(fileObject){

    reader.onloadend = function(e){
      doSomething(e.target.result); //assumes doSomething defined elsewhere
    }

    var fileAsText = reader.readAsText(fileObject);
}
</code></pre>

<p>绝对是一个要求减少杂乱无章的 API。</p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - Phonegap FileReader readAsText 返回 null 但 readAsDataURL 有效,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19119829/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19119829/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - Phonegap FileReader readAsText 返回 null 但 readAsDataURL 有效