Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cordova fileReader适用于文本,但对于jpgs返回null_Javascript_Angularjs_Cordova_Filereader - Fatal编程技术网

Javascript Cordova fileReader适用于文本,但对于jpgs返回null

Javascript Cordova fileReader适用于文本,但对于jpgs返回null,javascript,angularjs,cordova,filereader,Javascript,Angularjs,Cordova,Filereader,我正在使用android nexus 9的模拟进行测试 我为文本运行此代码,它可以工作: var filePath = cordova.file.dataDirectory + "files/newFile.txt"; window.resolveLocalFileSystemURL(filePath, gotFileEntry, fail); function gotFileEntry(fileEntry) { console.log("gotFileEntry: "+fileEnt

我正在使用android nexus 9的模拟进行测试

我为文本运行此代码,它可以工作:

var filePath = cordova.file.dataDirectory + "files/newFile.txt";
window.resolveLocalFileSystemURL(filePath, gotFileEntry, fail);

function gotFileEntry(fileEntry) {
    console.log("gotFileEntry: "+fileEntry.name); //"newFile.txt"
    console.log("fileEntry fullpath: "+fileEntry.fullPath); //"/newFile.txt" - cause for concern?
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    console.log("Got the File");
    console.log("Type: " + file.type); //text/plain
    console.log("Path: " + file.fullPath); //undefined
    //path wasn't defined, manually set it
    file.fullPath = fullPath = cordova.file.dataDirectory + 'files/' + file.name;
    console.log("Path: " + file.fullPath); //"file:///data/data/com.ionicframework.myproject123456/files/files/newFile.txt"
    console.log("Bytes: " + file.size); //~14 bytes

    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log('Reader status "onloadend": '+reader.readyState); //2 (a.k.a loaded)
        console.log('Result: '+evt.target.result); //"data:text/plain;base64,c26tZSBmaWx1IGrhdGE=" (success)
        console.log('Result: '+reader.result); //"data:text/plain;base64,c26tZSBmaWx1IGrhdGE=" (success)
    };
    reader.onerror = function(e) {
        console.log('Error.code: '+reader.error.code) //unused
        console.log('Error.message: '+reader.error.message) //unused
    }
    console.log("Reader status before: "+reader.readyState); //0
    reader.readAsDataURL(file);
    console.log("Reader status after: "+reader.readyState); //1
}
所以我切换它,尝试使用图片。相同的代码,将“newFile.txt”切换为“mypicture.jpg”:

使用“adb外壳”,我能够显示文件所在的目录。两个文件都在那里。两个文件的权限和所有者相同

我的最终目标是将文件作为base64数据流读入,并使用katzer的emailComposer插件将其作为附件添加到电子邮件中。我希望我也能在iOS部署中使用这种方法

我是如何错误地读取此图像文件的--为什么reader.readyState返回null


提前谢谢。

想好了。。这是一个愚蠢的错误-当我在调试其他东西时重写文件时,图像的权限被更改了。

解决了这个问题。。这是一个愚蠢的错误-当我在调试其他东西时重写文件时,图像的权限被更改。

3mb对于dataURL来说太大了,更小的图像可以工作吗?我还将在错误处理程序中
console.log(e)
,以获取详细信息。@dandavis计划使用此方法最终发送多达25mb的zip文件——我必须查看数据URL的最大大小。我没有考虑到数据流可能有一个最大长度。我一直没有定义“e”,所以我使用error.code并在线查找。我不熟悉这种语言。根据这些文章,我不认为大小会是一个问题:3mb对于一个dataURL来说太大了,一个较小的图像可以工作吗?我还将在错误处理程序中
console.log(e)
,以获取详细信息。@dandavis计划使用此方法最终发送多达25mb的zip文件——我必须查看数据URL的最大大小。我没有考虑到数据流可能有一个最大长度。我一直没有定义“e”,所以我使用error.code并在线查找。我对这门语言不熟悉。根据这些文章,我不认为大小会是一个问题:你给予了什么样的许可。请解释一下。。。我正在从gallery访问同一图像,我可以访问它,但从文件管理器中访问的同一图像,它为我提供了
阅读器。result
=null您授予的权限类型。请解释一下。。。我正在从gallery访问同一个图像,我可以访问它,但从文件管理器中访问的同一个图像,它为我提供了
读取器。结果
=null
var filePath = cordova.file.dataDirectory + "files/mypicture.jpg";
window.resolveLocalFileSystemURL(filePath, gotFileEntry, fail);

function gotFileEntry(fileEntry) {
    console.log("gotFileEntry: "+fileEntry.name); //"mypicture.jpg"
    console.log("fileEntry fullpath: "+fileEntry.fullPath); //"/mypicture.jpg" - cause for concern?
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    console.log("Got the File");
    console.log("Type: " + file.type); //image/jpeg
    console.log("Path: " + file.fullPath); //undefined
    //path wasn't defined, manually set it
    file.fullPath = fullPath = cordova.file.dataDirectory + 'files/' + file.name;
    console.log("Path: " + file.fullPath); //"file:///data/data/com.ionicframework.myproject123456/files/files/mypicture.jpg"
    console.log("Bytes: " + file.size); //~3 mega bytes

    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log('Reader status "onloadend": '+reader.readyState); //2 (a.k.a loaded)
        console.log('Result: '+evt.target.result); //"null" (FAILURE)
        console.log('Result: '+reader.result); //"null" (FAILURE)
    };
    reader.onerror = function(e) {
        console.log('Error.code: '+reader.error.code) //1 (NOT_FOUND_ERR?)
        console.log('Error.message: '+reader.error.message) //undefined
    }
    console.log("Reader status before: "+reader.readyState); //0
    reader.readAsDataURL(file);
    console.log("Reader status after: "+reader.readyState); //1
}