gpt4 book ai didi

flutter - 如何在Flutter中返回MultipartRequest中的数据

转载 作者:行者123 更新时间:2023-12-03 15:11:50 25 4
gpt4 key购买 nike

我正在通过rest API上传图像,我已成功上传图像。发送帖子请求后,我想取回数据。上传图片时,我还需要显示进度指示器。我如何获取值,我尝试使用Future Builder来获取它,但没有任何值。----------------------------- --------------------------

import 'package:path/path.dart';
import 'package:async/async.dart';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

upload(File imageFile) async {
// open a bytestream
var stream = new http.ByteStream(DelegatingStream(imageFile.openRead()));
// get file length
var length = await imageFile.length();

// string to uri
var uri = Uri.parse("http://192.168.43.76/soledesign/wp-json/wp/v2/media");

// 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);

//multipart that take headers
Map<String, String> headers = {
"Authorization":
"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xOTIuMTY4LjQzLjc2XC9zb2xlZGVzaWduIiwiaWF0IjoxNTg5Nzg0MDE2LCJuYmYiOjE1ODk3ODQwMTYsImV4cCI6MTU5MDM4ODgxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMTAzIn19fQ.ST-Ts_GnziJLJEIRLHvnZMW3xcs7f5ARk0ZeKTvMyFo",
"Content-Disposition": "attachment;filename=1.png",
"Content-Type": "image/png"
};

// add header to multipart
request.headers.addAll(headers);

// send
var response = await request.send();
print(response.statusCode);

// listen for response
response.stream.transform(utf8.decoder).listen((value) {
print(value);

});
}

class PickImgGallery extends StatefulWidget {
@override
_PickImgGalleryState createState() => _PickImgGalleryState();
}

class _PickImgGalleryState extends State<PickImgGallery> {
File _image;

Future getImage() async {
var image = await ImagePicker.pickImage(source: ImageSource.gallery);

setState(() {
_image = image;
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Builder(builder: (context) {
return Column(
children: <Widget>[
Center(
child: _image == null
? Text('No image selected.')
: Image.file(_image),
),
RaisedButton(
onPressed: () {
upload(_image);

Scaffold.of(context)
.showSnackBar(SnackBar(content: Text('Uploading')));
},
child: Text('Image Upload'),
),


],
);
}),
floatingActionButton: FloatingActionButton(
onPressed: () {

getImage();
},
tooltip: 'Pick Image',
child: Icon(Icons.add_a_photo),
),
);
}
}

最佳答案

在MultipartRequest之后接收数据,而不是此

  // send
var response = await request.send();
print(response.statusCode);

// listen for response
response.stream.transform(utf8.decoder).listen((value) {
print(value);

});

试试这个:
  http.Response response = await http.Response.fromStream(await request.send());
print("Result: ${response.statusCode}");
return response.body;

关于flutter - 如何在Flutter中返回MultipartRequest中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61927993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com