Explorar el Código

测试文件上传通过

Newki hace 1 año
padre
commit
7aba6b2f1f

+ 1 - 1
lib/api/api_provider.dart

@@ -53,7 +53,7 @@ class ApiProvider extends GetConnect {
 
       var form = FormData(map);
 
-      Log.d("Post请求FromData参数,fields:${form.fields.toString()}");
+      Log.d("Post请求FromData参数,fields:${form.fields.toString()} files:${form.files.toString()}");
       //以Post-Body的方式上传
       req = post(url, form, headers: headers);
     } else {

+ 36 - 17
lib/api/api_repository.dart

@@ -1,3 +1,5 @@
+import 'dart:io';
+
 import 'package:ftrecruiter/api/api_provider.dart';
 import 'package:ftrecruiter/comm/constants/api_constants.dart';
 import 'package:ftrecruiter/entity/response/UserLogin.dart';
@@ -71,34 +73,51 @@ class ApiRepository {
     params["registration_id"] = "1234";
 
     apiProvider.requestNetwork(ApiConstants.apiUserLogin,
-        method: HttpMethod.POST, headers: headers, query: params,
-        onSuccess: (json) {
+        method: HttpMethod.POST, headers: headers, query: params, onSuccess: (json) {
+      var userLogin = UserLogin.fromJson(json);
+      if (success != null) {
+        success(userLogin);
+      }
+    }, onError: onError);
+  }
+
+  //更新用户信息
+  void userProfileUpdate(String? token,
+      {NetSuccessCallback<UserLogin>? success, NetErrorCallback? onError}) {
+    Map<String, String> headers = {};
+    headers["Accept"] = "application/x.yyjobs-api.v12+json";
+    headers["Authorization"] = "bearer$token";
+
+    Map<String, String> params = {};
+    params["mobile_no"] = "+8618571458165";
+    params["verification_code"] = "123456 ";
+    params["nick_name"] = "test liukai";
 
-          var userLogin = UserLogin.fromJson(json);
-          if (success != null) {
-            success(userLogin);
-          }
+    Map<String, String> paths = {};
+    paths['news_feed_avatar'] =
+        '/data/user/0/com.hongyegroup.ftrecruiter/app_flutter/test_avatar.jpeg';
 
+    apiProvider.requestNetwork(ApiConstants.apiUpdateProfile,
+        method: HttpMethod.POST, headers: headers, query: params, paths: paths, onSuccess: (json) {
+      var userLogin = UserLogin.fromJson(json);
+      if (success != null) {
+        success(userLogin);
+      }
     }, onError: onError);
   }
 
   //酒店登陆
   void hotelLogin({NetSuccessCallback<HotelLogin>? success, NetErrorCallback? onError}) {
-
     Map<String, String> params = {};
     params["auth_code"] = "DAP3VDG";
     params["device_mac"] = "020000000000";
 
-    apiProvider.requestNetwork(ApiConstants.apiHotelLogin,
-        method: HttpMethod.POST, query: params,
+    apiProvider.requestNetwork(ApiConstants.apiHotelLogin, method: HttpMethod.POST, query: params,
         onSuccess: (json) {
-
-          var userLogin = HotelLogin.fromJson(json);
-          if (success != null) {
-            success(userLogin);
-          }
-
-        }, onError: onError);
+      var userLogin = HotelLogin.fromJson(json);
+      if (success != null) {
+        success(userLogin);
+      }
+    }, onError: onError);
   }
-
 }

+ 3 - 0
lib/comm/constants/api_constants.dart

@@ -19,4 +19,7 @@ class ApiConstants {
   //酒店登陆
   static const apiHotelLogin = "/index.php/api/v1/device/login";
 
+  //更新用户信息
+  static const apiUpdateProfile = "/index.php/api/employee/profile/edit";
+
 }

+ 20 - 6
lib/modules/zdemo/DemoPage.dart

@@ -1,15 +1,18 @@
+import 'dart:io';
+
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
 import 'package:ftrecruiter/comm/constants/color_constants.dart';
 import 'package:ftrecruiter/comm/utils/dark_theme_util.dart';
+import 'package:ftrecruiter/comm/utils/log_utils.dart';
 import 'package:ftrecruiter/comm/widget/common_widget.dart';
 import 'package:ftrecruiter/comm/widget/my_button.dart';
 import 'package:ftrecruiter/modules/zdemo/demo_controller.dart';
 import 'package:get/get.dart';
 
 class DemoPage extends StatelessWidget {
-   DemoPage({Key? key}) : super(key: key);
+  DemoPage({Key? key}) : super(key: key);
 
   final controller = Get.put(DemoController(apiRepository: Get.find()));
 
@@ -50,22 +53,33 @@ class DemoPage extends StatelessWidget {
                 text: "My Button的封装按钮",
                 backgroundColor: ColorConstants.gray,
                 onPressed: () {
-                  SmartDialog.compatible.showToast("MyButton的封装按钮");
+
+                  controller.getLocalFile('test_avatar.jpeg').then((File file) {
+                    // 在此处处理文件对象
+
+                   var list =  file.readAsBytesSync();
+                    SmartDialog.compatible.showToast("file:${file.parent}");
+
+                    Log.e("file:${file.path}  list:$list");
+                  });
+
+
                 },
                 radius: 15,
-                enableOverlay: false,   //禁用水波纹
-                side: BorderSide(color: Colors.black,width: 1.0),
+                enableOverlay: false,
+                //禁用水波纹
+                side: BorderSide(color: Colors.black, width: 1.0),
               ),
 
               CommonWidget.rowHeight(height: 15),
 
               MyButton(
                 text: "自定义圆角按钮",
-                backgroundColor: DarkThemeUtil.multiColors(ColorConstants.dividerColor, darkColor: Colors.deepOrange),
+                backgroundColor: DarkThemeUtil.multiColors(
+                    ColorConstants.dividerColor, darkColor: Colors.deepOrange),
                 radius: 20,
                 elevation: 5.0,
                 onPressed: () {
-
                   controller.getServerTime();
                 },
               ),

+ 22 - 0
lib/modules/zdemo/demo_controller.dart

@@ -1,3 +1,5 @@
+import 'dart:io';
+import 'package:path_provider/path_provider.dart';
 import 'package:flustars/flustars.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -42,7 +44,21 @@ class DemoController extends GetxController with StateMixin<ServerTime> {
 
     //测试Post请求,用户登陆
     apiRepository.userLogin(success: (userLogin) {
+
       SmartDialog.showToast("Token: ${userLogin.token}");
+
+
+      apiRepository.userProfileUpdate(userLogin.token,success: (userLogin) {
+
+        SmartDialog.showToast("更新用户信息成功");
+
+      },onError: (code, msg) {
+
+        SmartDialog.showToast("更新用户信息错误: $code $msg");
+
+      });
+
+
     }, onError: (code, msg) {
       Log.d("用户登陆-error:$code $msg");
     });
@@ -54,4 +70,10 @@ class DemoController extends GetxController with StateMixin<ServerTime> {
     // });
 
   }
+
+  Future<File> getLocalFile(String fileName) async {
+    final directory = await getApplicationDocumentsDirectory();
+    return File('${directory.path}/$fileName');
+  }
+
 }