[英]how to upload files (pdf, doc / image) from file_picker to api server on flutter
如何将文件(pdf、doc/图像)从 file_picker 上传到 flutter 上的 api 服务器。
我有一个 flutter 项目想要从所选数据上传文件。 到 select 一个我使用 file_picker 的文件。 以下代码为 select 一个文件。
void _openFileExplorer() async {
setState(() => _loadingPath = true);
try {
_directoryPath = null;
_paths = (await FilePicker.platform.pickFiles(
type: _pickingType,
allowMultiple: _multiPick,
allowedExtensions: ['jpg', 'pdf', 'doc', 'docx', 'png'],
))
?.files;
} on PlatformException catch (e) {
print("Unsupported operation" + e.toString());
} catch (ex) {
print(ex);
}
if (!mounted) return;
setState(() {
_loadingPath = false;
_fileName = _paths != null ? _paths.map((e) => e.name).toString() : '...';
});
}
那怎么上传呢?
我正在使用这个 function 将文件上传到我的服务器
static Future<bool> _upload(File file, int id) async { var headers = {'Authorization': 'Bearer TOKEN'}; // remove headers if not wanted var request = http.MultipartRequest( 'POST', Uri.parse(BaseUrl + ADD_IMAGE_TO_PRODUCTS)); // your server url request.fields.addAll({'id': '$id'}); // any other fields required by your server request.files.add(await http.MultipartFile.fromPath('image', '${file.path}')); // file you want to upload request.headers.addAll(headers); http.StreamedResponse response = await request.send(); if (response.statusCode == 200) { print(await response.stream.bytesToString()); return true; } else { print(response.reasonPhrase); return false; } } }
http
packageimport 'package:http/http.dart' as http;
default
构造函数创建MultipartRequest
var request = http.MultipartRequest('POST', Uri.parse(url));
request.files.add(
http.MultipartFile(
'picture',
File(filename).readAsBytes().asStream(),
File(filename).lengthSync(),
filename: filename.split("/").last
)
);
var res = await request.send();
MultipartFile.fromBytes()
var request = http.MultipartRequest('POST', Uri.parse(url));
request.files.add(
http.MultipartFile.fromBytes(
'picture',
File(filename).readAsBytesSync(),
filename: filename.split("/").last
)
);
var res = await request.send();
MultipartFile.fromPath()
var request = http.MultipartRequest('POST', Uri.parse(url));
request.files.add(
await http.MultipartFile.fromPath(
'picture',
filename
)
);
var res = await request.send();
var request = http.MultipartRequest('POST', Uri.parse(url));
request.fields['key'] = 'value';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.