如何从phonegap的html5输入字段文件对象获取路径
How to get path from html5 input field file object for phonegap
如何从从html5输入字段返回的文件对象中获取路径?
基本上,phonegap应用程序设置为在线并从第三方网站下载声音文件,然后浏览到下载的文件并将其移动到本地目录。(短<1秒的声音文件)。
问题是文件对象属性.fullPath未定义。getFile采用路径输入,而不是[object File]输入。
来自以下代码:
<input style="opacity:0;" type="file" name="soundInput" id="soundInput"/>
<script type="text/javascript" charset="utf-8">
var soundInput = document.getElementById('soundInput');
soundInput.addEventListener('change', function(){handleFileSelect(type);}, false);
soundInput.click();
function handleFileSelect() {
var file = this.files[0]; // FileList object
var type = isThumpy;
alert("file = " + file.name + "'n full path = " + file.fullPath);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
gotFS(fs,file,type);
}, fail);
}
function fail(error) {
alert("error " + error.code);
}
function gotFS(fileSystem, file, type) {
alert("got filesystem");
var flags = {create: false, exclusive: false};
fileSystem.root.getFile(file, flags, function(fe){
gotFileEntry(type,fe);
},fail);
}
function gotFileEntry(type, fileEntry) {
alert("got fileEntry");
fileEntry.copyTo(path, function(fe){successfulCopy(type, fe);}, fail);
}
function successfulCopy(type, fileEntry) {
alert("copy success");
setSoundByUri(type, fileEntry.name)
}
</script>
它不会超过"got filesystem",也不会抛出错误("error"+error.code)。请提供帮助。
您无法从文件输入中获取路径数据。文件输入是只读的。尝试改变方法。使用phoneGap fileEntry创建新文件,并从文件输入中写入数据。
像这样:
<script type="text/javascript" charset="utf-8">
function handleFileSelect(type) {
var file = this.files[0]; // FileList object
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
gotFS(fs,file,type);
}, fail);
}
function gotFS(fileSystem, file, type) {
var flags = {create: true, exclusive: false};
fileSystem.root.getFile(file.name, flags, function(fe) {gotFileEntry(fe, file, type);}, fail);
}
function gotFileEntry(fileEntry, file, type) {
fileEntry.createWriter(function(w){gotFileWriter(w, file, type);}, fail);
}
function gotFileWriter(fileWriter, file, type) {
fileWriter.onwriteend = function(evt){setSoundByUri(type, path + file.name);};
var reader = new FileReader();
reader.onload = function(event) {
var rawData = event.target.result;
fileWriter.write(rawData);
};
reader.onerror = function(event){
alert("error, file could not be read" + event.target.error.code);
};
reader.readAsArrayBuffer(file);
}
function fail(error) {
alert("error " + error.code);
if (error.code == FileError.PATH_EXISTS_ERR){
alert("The file already exists.");
}
}
</script>
相关文章:
- HTML5要求隐藏文件字段-反馈位置
- 如何使用ian:accounts-ui-botstrap-3根据Meteor中的用户输入设置配置文件字段值
- 具有输入类型文件字段的语义UI重置表单
- 验证数组文件字段的表单提交
- 如何将base64写入模型's文件字段
- 如何在jquery中清除输入文件字段
- javascript函数将上传文件字段设置为deafult
- 远程:true 选项不适用于 Rails 4 中的文件字段
- 更改文件字段内显示的路径的位置
- HTML5拖放文件字段
- 加载输入文件字段
- 如何打开使用文件字段上传的文件
- Bootstrap Filestyle-更改文件字段的按钮文本'不起作用
- 文件字段值显示错误
- 如何使用文件字段创建隐藏表单
- 重复字段值到包含的文件字段
- ExtJS5如何不提交空的文件字段
- Extjs文件字段按钮只与一个图像
- ExtJs文件字段在第一次使用后消失
- 当用户以javascript上传无效文件时,清除输入文件字段