在iPad上传> 256MB的文件时,会发生错误,应用程序关闭。 该应用程序基于Cordova 3.5.0
构建代码功能上传:
function uploadVideo(task_id){
navigator.camera.getPicture(
successGetFileFromCamera,
failGetFileFromCamera,
{
quality: 100,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,
mediaType: navigator.camera.MediaType.VIDEO
}
);
var chargeBar = '';
function successGetFileFromCamera(fileURI) {
console.log('Success Camera method getPicture. ' + fileURI);
window.resolveLocalFileSystemURL(fileURI, successGetFileFromLocal, failGetFileFromLocal);
}
function successGetFileFromLocal(fileEntry) {
console.log('Success object LocalFileSystem method resolveLocalFileSystemURL.');
console.log(fileEntry);
fileEntry.file(successFile, failFile);
}
function successFile(fileObj) {
console.log('Success File method file.');
console.log(fileObj);
var localURL = fileObj.localURL,
fileName = fileObj.name;
var options = new FileUploadOptions();
options.fileKey = "my_video";
options.fileName = fileName;
options.mimeType="video/mp4";
var params = {};
params.task_id = task_id;
options.params = params;
options.chunkedMode = false;
ft.upload(localURL, encodeURI(host + '/myserver/uploadFile/projectId:' + projectId + '/responderId:' + responderId), successUploadFileToServ, failUploadFileToServ, options);
}
function successUploadFileToServ(r) {
console.log('Success FileTransfer method upload.');
console.log(r);
closeProgress();
data = $.parseJSON(r.response);
$.mobile.changePage('index.html');
if(data.result) {
navigator.notification.alert('Video file has been successfully loaded', null, 'Upload file', null);
} else {
dataHaveError(data);
}
}
}
记录设备
Sep 4 11:52:18 iPad-Sergej MyApp [1364]:成功相机方法getPicture。文件:///private/var/mobile/Applications/8DC19A51-BB7E-45BB-88B2-E12445F1EB99/tmp/trim.EDD77556-5D40-4009-9A50-BB67D6145727.MOV
9月4日11:52:18 iPad-Sergej MyApp [1364]:线程警告:['文件']采取' 15.891846'女士。插件应该使用后台线程
9月4日11:52:18 iPad-Sergej MyApp [1364]:成功对象LocalFileSystem方法resolveLocalFileSystemURL。
9月4日11:52:18 iPad-Sergej MyApp [1364]:{" isFile":true," isDirectory":false," name":&#34 ; trim.EDD77556-5D40-4009-9A50-BB67D6145727.MOV"" FULLPATH":" /trim.EDD77556-5D40-4009-9A50-BB67D6145727.MOV",& #34;文件系统":""" nativeURL":"文件:/// VAR /移动/应用/ 8DC19A51-BB7E-45BB-88B2-E12445F1EB99 /tmp/trim.EDD77556-5D40-4009-9A50-BB67D6145727.MOV"}
9月4日11:52:18 iPad-Sergej MyApp [1364]:线程警告:['文件']采取了69.734131'女士。插件应该使用后台线程
9月4日11:52:18 iPad-Sergej MyApp [1364]:成功文件方法文件。
9月4日11:52:18 iPad-Sergej MyApp [1364]:{" name":" trim.EDD77556-5D40-4009-9A50-BB67D6145727.MOV"," localURL":" cdvfile://localhost/temporary/trim.EDD77556-5D40-4009-9A50-BB67D6145727.MOV","类型":空,"&lastModifiedDate #34;:1409817138000,"大小":408288782"开始":0,"端":408288782}
9月4日11:52:18 iPad-Sergej MyApp [1364]:MyApp(1364,0x3a76618c)malloc: * mach_vm_map(size = 408289280)失败(错误代码= 3)
错误:无法分配区域
在malloc_error_break中设置断点以进行调试
9月4日11:52:18 iPad-Sergej MyApp [1364]: 由于未捕获的异常终止应用程序' NSFileHandleOperationException',原因:' - [NSConcreteFileHandle readDataOfLength:]:无法分配内存'
* 第一次抛出调用堆栈:
(0x2d6f8f83 0x381dfccf 0x2d6f8ec5 0x2e0a7931 0x2e0a7fe3 0xe4aff 0xe76a5 0xd2849 0xd253f 0x2e0d9163 0x2d6c4167 0x2d6c3d7f 0x2d6c211b 0x2d62cebf 0x2d62cca3 0x32527663 0x2ff7914d 0xd5af7 0x386ecab7)
9月4日11:52:18 iPad-Sergej ReportCrash [1365]:ReportCrash代表PID 1364
9月4日11:52:19 iPad-Sergej ReportCrash [1365]:制定流程MyApp的崩溃报告[1364]
9月4日11:52:19 iPad-Sergej mediaserverd [1160]:11:52:19.667 [0x2212000] CMSession保留计数> 1!
9月4日11:52:19 iPad-Sergej SpringBoard [33]:[MPUSystemMediaControls]更新现在播放应用程序支持的命令。
9月4日11:52:19 iPad-Sergej com.apple.launchd [1](UIKitApplication:com.my_app [0x51e5] [1364]):( UIKitApplication:com.my_app [0x51e5])工作似乎已经崩溃:中止陷阱:6
9月4日11:52:19 iPad-Sergej backboardd [29]:应用程序' UIKitApplication:com.my_app [0x51e5]'信号异常退出6:中止陷阱:6
9月4日11:52:19 iPad-Sergej ReportCrash [1365]:使用uid将崩溃报告保存到/var/mobile/Library/Logs/CrashReporter/MyApp_2014-09-04-115218_iPad-Sergej.ips:0 gid:0,synthetic_euid: 501 egid:0
任何人都可以遇到类似的问题,请帮忙。或者需要使用其他插件上传。