form-data 提交文件请求远程调用

该代码示例展示了如何使用Java的OkHttpClient库上传文件到服务器并获取文件URL。文件上传通过POST请求实现,利用MultipartBody构建请求体,服务器端由SpringBoot的Controller处理文件并返回文件ID。
摘要由CSDN通过智能技术生成

文件请求方法

    /**
     * 上传图文消息内的图片  获取url
     * 富文本内的图片
     *
     * @param file
     */
    public static String uploadMediaGetUrl(File file) throws IOException {
        if (!file.exists()) {
            return null;
        }
        String responseData = null;
        try {
            String url = "http://localhost:8503/file/upload";
            OkHttpClient client = new OkHttpClient();
            MediaType mediaType = MediaType.parse("multipart/form-data");
            RequestBody fileBody = RequestBody.create(mediaType, file);
            RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("file", file.getName(), fileBody) // 中间参数为文件名
                    .build();
            Request request = new Request.Builder()
                    .url(url)
                    .post(requestBody)
                    .build();
            Response response = client.newCall(request).execute();
            responseData = response.body().string();
        } catch (Exception e) {
            e.printStackTrace();
        }
        JSONObject jsonObject = JSONObject.parseObject(responseData);
        JSONObject data = (JSONObject)jsonObject.get("data");
        return (String)data.get("fileId");
    }


//测试 ,传入文件或者图片
    public static void main(String[] args) throws IOException {
        File file = new File("d:\\Documents\\WeChat Files\\wxid_u2tkiuv7461q22\\FileStorage\\File\\123\\123.png");
        String fileId = WxApiUtils.uploadMediaGetUrl(file);
        System.out.println("fileId-----" + fileId);

    }

文件接收方法

/**
 * 文件上传Controller
 *
 * @author xushuang
 * @date 2023-06-08
 */
@Api(tags = "文件上传")
@RestController
@RequestMapping("/file")
@RequiredArgsConstructor
public class FsFileController extends BaseController {

    private final FsFileService fsFileService;

    private static final Logger log = LoggerFactory.getLogger(FsFileController.class);


    @ApiOperation("文件上传")
    @PostMapping("upload")
    public AjaxResult upload(MultipartFile file) {
        log.info("文件上传");
        return AjaxResult.success(fsFileService.upload(file));
    }

携带多个参数的情况
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值