我有一个应用程序可以拍摄照片/视频并将其发送到保存此照片/视频的服务器。
要拍照我使用的是cordova-plugins:
navigator.device.capture.captureImage(
function (fileURL) {
defer.resolve(fileURL);
},
function (errorData) {
defer.reject(errorData);
});
我的任务是创建将在后台处理文件的WebWorker(不在主线程中):
要编码我正在使用:
当我不使用WebWorker时,一切都很好用:
window.resolveLocalFileSystemURL(
fileURL,
function (fileEntry) {
return fileEntry.file(function(data) {
var reader = new FileReader();
reader.onloadend = function (evt) {
InsertMedia(...); // data inserted on my server
};
//convert file to base64 formats
reader.readAsDataURL(data);
});
},
function (errorData) {
defer.reject(errorData);
});
然后我创建了名为&doff.js'
的WebWorkerself.addEventListener('message', function (e) {
var data = e.data;
try
{
self.postMessage(e.data instanceof File); // will return 'false'
var reader = new FileReaderSync();
reader.readAsDataURL(data);
}
catch (err) {
self.postMessage(err.message);
}
}, false);
从主线程中使用这个工作者:
window.resolveLocalFileSystemURL(
fileURL,
function (fileEntry) {
return fileEntry.file(function (data) {
alert(data instanceof File); // will return 'true'
var worker = new Worker('doWork.js');
worker.addEventListener('message', function (e) {
alert(e.data);
}, false);
worker.postMessage(data);
});
},
function (errorData) {
defer.reject(errorData);
});
使用WebWorker后,我总是遇到这个问题: WebWorker无法执行“readAsDataURL' on' FileReaderSync':在处理操作时找不到请求的文件或目录
我如何处理WebWorker中的文件?