gpt4 book ai didi

flutter - 文件名与扩展名混合

转载 作者:IT王子 更新时间:2023-10-29 06:58:08 25 4
gpt4 key购买 nike

我正在尝试将图像上传到我的服务器。这就是我所做的。

我使用 image_picker,

image_picker: ^0.4.12+1

下面是我如何从我的图库中获取图像

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

然后在我的 flatbutton 的 onPressed 上我这样做

_upload() async {
print(_image);
}

我明白了

I/flutter (19150): File: '/data/user/0/com.xxxx.xxxx/cache/image_picker1202934200258215491jpg'

所以我的问题是,为什么我的图像扩展名与我的文件名混合在一起,我该如何解决?

这是我处理图片的脚本

class _MainPageState extends State<MainPage> {
bool _isLoggedIn = false;
bool _isInAsyncCall = false;
File _image;
String _Fullname,_Email,_ProfilPict;

TabController controller;


Widget _Profil() {
return SingleChildScrollView(
child: new Center(
child: Container(
color: Colors.white30,
child: new Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
_image == null ?
Container(
width: 150.0,
height: 150.0,
margin: EdgeInsets.only(top: 25.0, bottom: 10.0),
child: CircleAvatar(
radius: 30.0,
backgroundImage:
NetworkImage('https://via.placeholder.com/150'),
backgroundColor: Colors.transparent,
)
):
Container(
height: 150.0,
width: 150.0,
margin: EdgeInsets.only(top: 25.0, bottom: 10.0),
child: CircleAvatar(
radius: 30.0,
backgroundImage: FileImage(_image),
backgroundColor: Colors.transparent,
child: Align(
alignment: Alignment.topRight,
child: IconButton(
icon: Icon(Icons.cancel),
onPressed: () {
setState(() {
_image = null;
});
},
)
),
)

),
_image == null ?
FlatButton(
child:Text("Edit"),
onPressed:getImage,
):
FlatButton(
child:Text("Upload"),
onPressed: _upload,
),

],
)),
),
);
}

_upload() async {

var stream = new http.ByteStream(DelegatingStream.typed(_image.openRead()));
var length = await _image.length();
var uri = Uri.parse("http://192.168.1.12:84/project/api/Upload_image");
var request = http.MultipartRequest("POST", uri);
var multipartFile = new http.MultipartFile('userfile', stream, length,
filename: Path.basename(_image.path)
);
request.files.add(multipartFile);
var response = await request.send();
print(response.statusCode);
response.stream.transform(utf8.decoder).listen((value) {
print(value);
});
}

}

所以问题是当我使用 android studio 模拟器时,当我在真实设备上尝试时它工作正常。

最佳答案

您从ImagePicker.pickImage 获取的imageFile 类型,如果您需要打印路径,请按如下方式执行:

var image = await ImagePicker.pickImage(source: ImageSource.gallery);
print(image.path);

如果你需要上传图片,寻找MultipartRequest

关于flutter - 文件名与扩展名混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54946494/

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