[md]我正在学习Flutter应用开发,面临一个主要问题:如何通过REST API将手机中上传的多个文件保存到WordPress网站。我已经按照以下代码在Flutter中捕获了文件。 [以下是Flutter代码示例] 我从上面的Dart代码中,_image 是包含所有图像文件的列表。 我不确定如何通过WordPress REST API接收这些图像。我尝试进行了研究,但没找到任何有帮助的内容。这是我的WordPress代码: [以下是WordPress代码示例] 函数 wpmam_mobile_app_checkin_clients 中的 $images 变量可能不正确,并且不知道如何继续。 回答: 要在WordPress REST API中接收并处理上传的多张图片,你需要对WordPress代码做一些修改。以下是一些步骤和代码示例,帮助你实现这个功能: 确保你的路由支持文件上传: 在你的register_rest_route函数中,确保你的endpoint支持POST方法。 处理文件上传: 使用WordPress内置的媒体上传功能来处理上传的文件。 修改WordPress代码: 修改wpmam_mobile_app_checkin_clients函数来接收并保存上传的图片。 php function wpmam_mobile_app_checkin_clients($request){ $parameters = $request->get_json_params(); // 其他参数处理... // 检查是否有文件上传 if (isset($_FILES['images']) && is_array($_FILES['images']['tmp_name'])) { foreach ($_FILES['images']['tmp_name'] as $index => $tmp_name) { if (isset($tmp_name) && $tmp_name != '') { // 将文件从临时目录移动到WordPress上传目录 $file = wp_handle_sideload($tmp_name, array('test_form' => false), 'sideload_' . time()); if (isset($file['file'])) { // 保存文件URL到你的数据结构或数据库 $images[] = $file['file']; } } } } // 其他处理... return new WP_REST_Response($response, 200); // 返回HTTP状态200 } 设置正确的Content-Type: 确保你的Flutter应用在发送请求时设置了正确的Content-Type。对于文件上传,应该是multipart/form-data,而不是application/json。 处理响应: 根据上传的结果,返回适当的响应给Flutter应用。 错误处理: 添加错误处理逻辑,以便在上传失败时返回有用的错误信息。 测试: 在WordPress网站上测试你的API,确保文件上传按预期工作。 请注意,这段代码只是一个示例,你可能需要根据你的具体需求进行调整。确保你的WordPress安装具有处理文件上传所需的权限和配置。此外,对于生产环境,你还需要考虑安全性,比如验证上传的文件类型和大小。[/md] |