how to upload files (pdf, doc / image) from file_picker to api server on flutter
6,012
Solution 1
Import http
package
import 'package:http/http.dart' as http;
Create MultipartRequest
using default
constructor
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();
Using 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();
Using MultipartFile.fromPath()
var request = http.MultipartRequest('POST', Uri.parse(url));
request.files.add(
await http.MultipartFile.fromPath(
'picture',
filename
)
);
var res = await request.send();
Adding Regular Text Fields
var request = http.MultipartRequest('POST', Uri.parse(url));
request.fields['key'] = 'value';
Solution 2
I'm using this function to upload file to my server
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;
}
}
}
Author by
i18
Updated on December 28, 2022Comments
-
i18 over 1 year
how to upload files (pdf, doc / image) from file_picker to api server on flutter.
I have a project with flutter wanting to upload files from the selected data. to select a file I use file_picker. the following code to select a file.
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() : '...'; });
}
then how to upload it ?