Phonegap文件上传 - 如何获得文件扩展名?

时间:2015-08-06 14:13:01

标签: cordova file-transfer

我在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

是否有一种简单的方法可以获取手机捕获的文件的扩展名甚至全名?

感谢您的投入。

2 个答案:

答案 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)

我认为你要找的东西应该是这样的。

&#13;
&#13;
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;
&#13;
&#13;