如果文件没有后缀名,您可以尝试使用`flutter_file_utils`插件来获取文件的MIME类型。以下是一个简单的示例代码:
```
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:flutter_file_utils/flutter_file_utils.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Upload Demo',
home: UploadDemo(),
);
}
}
class UploadDemo extends StatefulWidget {
@override
_UploadDemoState createState() => _UploadDemoState();
}
class _UploadDemoState extends State {
File _file;
Future _pickImage(ImageSource source) async {
final pickedFile = await ImagePicker().getImage(source: source);
setState(() {
_file = File(pickedFile.path);
});
if (_file != null) {
String mimeType = await FileUtils.getFileMimeType(_file.path);
if (mimeType.startsWith('image/')) {
// Upload image
print('Uploading image...');
} else if (mimeType.startsWith('video/')) {
// Upload video
print('Uploading video...');
} else {
// Unsupported file type
print('Unsupported file type: $mimeType');
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Upload Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_file == null
? Text('No file selected.')
: Image.file(_file),
SizedBox(height: 20),
RaisedButton(
onPressed: () => _pickImage(ImageSource.gallery),
child: Text('Select Image'),
),
],
),
),
);
}
}
```
在这个示例中,我们使用`flutter_file_utils`插件的`getFileMimeType`方法来获取文件的MIME类型。然后,我们检查MIME类型是否以`image/`或`video/`开头,并相应地上传文件。如果MIME类型不是图像或视频,则表示不支持该文件类型。