android - 如何在颤动中将图像发布到服务器
问题描述
我想将一些数据发布到我的 laravel 服务器,我可以将文本数据发送到服务器,但我无法将我的图像发送到服务器。请看看我做了什么。
我的模型课:
class Articles{
int id;
String title;
String image;
String author;
toJson(){
return {
'id' : id.toString(),
'title' : title,
'image':image.toString()
};
}
}
我的图像文件
final title = TextEditingController();
final details = TextEditingController();
final categoryId = TextEditingController();
final link = TextEditingController();
File _image;
final picker = ImagePicker();
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.camera);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
以及我在 onPressed 方法中传递的内容
var articles = Articles();
articles.title = title.text;
articles.details = await keyEditor.currentState.getText();
articles.image = _image.toString();
articles.category_id = dropdownValue.id;
articles.user_id = _userId;
_postArticles(context, articles);
setState(() {
isLoading = true;
});
当我发送没有图像的发布请求时,它成功工作,但使用图像后无法正常工作,但我能够在我的存储中获取图像路径。
I/flutter (11340): {id: null, views: null, title: ggg, details: hhh , category_id: 8, user_id: 3, image: File: '/storage/emulated/0/Android/data/com.drapp.flutter_lara_news/files/Pictures/df7f4e7c-2e89-4fc1-b315-fc8110a605f77878269288328274785.jpg'}
解决方案
Future _doPhoto() async {
var image = await ImagePicker.pickImage(source: ImageSource.camera, maxHeight: 1024, maxWidth: 1024);
var map = Map();
map['image'] = base64Encode(image.readAsBytesSync());
var res = await doUploadImageSvc(map);
}
static Future doUploadImageSvc(Map map) async {
map["token"] = await API.getToken();
var url = await getAPI() + "/do-ui-svcdoc.php";
return http.post(url, body: map);
}
推荐阅读
- python - numpy 库中的“NPY_INLINE”是什么意思?
- c++ - 具有非循环依赖关系的可发布组件的多版本问题
- php - 如何在 PHP PDO 上设置无缓冲结果集大小?
- javascript - 不可能将参数从一个组件传递到另一个组件。角
- python - python绘制带有分类x轴的误差线
- mysql - 如何不增加主键的增量?
- r - 如何将函数 substr 应用于字符串的每个元素
- python-3.x - 网络抓取 - 我如何获得网页中所有可用帖子的价格
- html - Outlook 对齐表中的 HTML 问题
- android - 在导航图深层链接中使用查询参数时,Android 应用程序崩溃