Contamos con tu ayuda para difundir nuestros posts referente a las ciencias de la computación.
Solución:
El método más simple sería publicar una solicitud de varias partes como en esta publicación y luego publicarla en el servidor.
Asegúrese de importarlos al principio del archivo:
import 'package:path/path.dart';
import 'package:async/async.dart';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'dart:convert';
Agregue esta clase en algún lugar de su código:
upload(File imageFile) async
// open a bytestream
var stream = new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
// get file length
var length = await imageFile.length();
// string to uri
var uri = Uri.parse("http://ip:8082/composer/predict");
// create multipart request
var request = new http.MultipartRequest("POST", uri);
// multipart that takes file
var multipartFile = new http.MultipartFile('file', stream, length,
filename: basename(imageFile.path));
// add file to multipart
request.files.add(multipartFile);
// send
var response = await request.send();
print(response.statusCode);
// listen for response
response.stream.transform(utf8.decoder).listen((value)
print(value);
);
Luego sube usando:
upload(File(filePath));
En tu código:
void onTakePictureButtonPressed()
takePicture().then((String filePath)
if (mounted)
setState(()
imagePath = filePath;
videoController?.dispose();
videoController = null;
);
// initiate file upload
Upload(File(filePath));
if (filePath != null) showInSnackBar('Picture saved to $filePath');
);
import 'package:dio/dio.dart'; //From 3.x.x version
uploadImage()
var formData = FormData();
formData.files.add(MapEntry("Picture", await MultipartFile.fromFile(data.foto.path, filename: "pic-name.png"), ));
var response = await dio.client.post('v1/post', data: formdata);
Si está enviando la imagen al servidor PHP Laravel. Prueba a reducir la size of the image
mientras lo envía al servidor. Usé el paquete Image Picker para reducir el tamaño de la imagen.
var image = await ImagePicker.pickImage(source: imageSource, imageQuality: 50, maxHeight: 500.0, maxWidth: 500.0);
Luego cree un archivo de varias partes con esa imagen, agréguelo a los datos del formulario y envíe los datos del formulario al servidor mediante la solicitud posterior con dio
biblioteca. Ver @Elialber Lopes
respuesta para el envío de los datos.
Funcionó para mí.
Si para ti ha sido de utilidad este artículo, sería de mucha ayuda si lo compartes con más desarrolladores y nos ayudes a difundir nuestra información.