我正在开发混合移动应用程序。
在其中一个场景中,我们需要在选择或上传文件时从文件中获取mimeType。
我正在使用apache FileTransfer。
window.resolveLocalFileSystemURL(fileURI,resolveOnSuccess,resolveOnFail)
答案 0 :(得分:4)
你可以从cordova文件插件中获取它。
$cordovaFile.checkFile(uri, '')
.then(function(entry) {
// success
var name = entry.name;
entry.file(function(data) {
// get mime type
var mime = data.type;
alert(mime);
})
}, function(error) {
// error
// show toast
});
答案 1 :(得分:1)
我在TypeScript和Angular 2中使用它:
this._File.resolveLocalFilesystemUrl(somefileUri).then((entry: Entry) => {
if (entry) {
var fileEntry = entry as FileEntry;
fileEntry.file(success => {
var mimeType = success.type;
}, error => {
// no mime type found;
});
}
});
答案 2 :(得分:0)
file-transfer
不公开mimeType和其他FileUploadOptions参数。
Mimetype自动检测仅支持Windows plugin code中的上传。
here is a Jira ticket for this feature CB-5946 - 它也有一些关于Android实施的建议。
答案 3 :(得分:0)
在Angular 2中,我使用了这个:
export class Plugins {
albums = {
open () : Promise<any> {
return ImagePicker.getPictures({
quality: 100,
maximumImagesCount: 1,
}).then((imgUrls) => {
return imgUrls;
}, (err) => {
if(err.error == "cordova_not_available") {
alert("Cordova is not available, please make sure you have your app deployed on a simulator or device");
} else {
console.log("Failed to open albums: " + err.error);
}
});
},
}
...
@Component({
templateUrl: 'build/pages/home/home.html',
directives: [UploadButton]
})
export class HomePage implements OnInit {
openAlbums = (): void => {
var $self = this;
this._plugins.albums.open().then((imgUrls) => {
imgUrls.forEach((imageUrl: string): void => {
if (imageUrl) {
window.resolveLocalFileSystemURL(imageUrl, function (entry: FileEntry) {
entry.file(file=> {
console.log('mimeType', file.type);
}, ((error:FileError) => console.log(error)));
});
}
});
}); };
resolveLocalFileSystemURL
通过成功回调回复Entry
,我必须转发FileEntry
才能访问文件方法,该方法会返回File
扩展Blob
{1}}具有mime类型属性。