我在phonegap应用中使用Filetransfer API。
现在,我发现无法解决这个问题,无法找到解决方案。
我已经使用了.toURL()和.fullPath,但两者都返回相同 如果我使用:
window.resolveLocalFileSystemURL(imageURI, function(entry){
console.log(entry.toURL()+' -- ' +entry.fullPath);
});
我明白了:
content://com.android.providers.media.documents/document/image%3A8055 - /com.android.providers.media.documents/document/image%3A8055
是否有一种简单的方法可以获取手机捕获的文件的扩展名甚至全名?
感谢您的投入。
答案 0 :(得分:1)
只有当您无法从您的Cordova API版本获取文件扩展名时,此答案才是“解决方法”。
由于你无法真正提取有关字符串URI的大量信息,我所做的是扫描Cordova提供的其他对象,然后我发现File
对象至少包含我需要的MIME类型。< / p>
从客户端代码,您需要执行此操作:
// After you get the URI of the file
window.resolveLocalFileSystemURL(fileUri, function(fileEntry) {
fileEntry.file(function(file) {
uploadFile(fileEntry, file.type);
});
});
// Code snippet for uploadFile function
function uploadFile(fileEntry, fileType) {
var serverUrl = DOMAIN + 'api/upload-file.php';
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileEntry.name;
options.mimeType = fileType;
options.chunkedMode = false;
// More codes are omitted for brevity
}
如果您使用PHP作为服务器端脚本,则可以使用$_FILES['file']
提取之前注入的信息,该信息将解析为您上传的文件并{{1这将解析为该文件的MIME类型。
现在将其映射到扩展名,您可以使用以下代码:
$_FILES['file']['type']
答案 1 :(得分:0)
我认为你要找的东西应该是这样的。
var file = "sample.jpg";
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys){
fileSys.root.getDirectory("FolderName",
{create:true, exclusive: false},
function(directory) {
alert("File URL: "+directory.toURL()+file);
}, getDirectoryError);
},
getDirectoryError);
function getDirectoryError(error) {
console.log("getDirectoryError: "+error.code);
}
&#13;