我已成功通过Cordova Video Capture捕获视频流,并将文件保存为file:///storage/emulated/...
。
但是我仍然坚持如何通过发送源代码(blob数据?)将文件保存到远程服务器
我尝试过的内容(path
是保存视频的路径。)
尝试1
这确实会返回文件,但只会返回乱码文本。如果我设置dataType: 'blob'
,则回调永远不会触发。
Dom7.ajax({ //<-- I'm using Framework7, hence the Dom7 DOM/AJAX library
url: path,
success: function(file_content) { }
});
尝试2 - 原生AJAX - 成功回调永远不会触发
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200) {
console.log('AJAX', typeof this.response);
}
}
xhr.open('GET', path);
xhr.responseType = 'blob';
xhr.send();
尝试3 - 通过Cordova File plugin
window.resolveLocalFileSystemURL(
cordova.file.applicationStorageDirectory,
function(dir) {
console.log('got app storage dir', dir); //<-- this fires
dir.getFile(path, {create:false}, function(fileEntry) {
console.log('got file!!!'); //<-- this doesn't
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
console.log(e);
};
reader.readAsDataURL(file);
});
});
},
function(err) {alert('didn\'t get it');
console.log(err);
}
);
...但由于该文件不存在于应用程序存储(或其外部应用程序存储对应物)中,因此这是学术性的。
这确实返回文件,但是作为文本。我怎样才能将它/转换为我可以通过CORS发送到远程服务器的格式?
要明确的是,这不是我要询问的CORS部分,只是以适合发送的格式获取视频文件内容。
[UPDATE]
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs) {
console.log(1, fs);
fs.root.getFile(path, {create: false, exclusive: false}, function(entry) {
console.log(2, entry);
});
});
但是只有第一个console.log
点火,而不是第二个。