java后端发送formdata数据上传文件


import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

@Test
    public void testUpload() throws Exception {
        String url = "http://xxx"; //上传的地址
        String filePath = "C:\\Users\\admin\\Desktop\\123.jpg";

        RestTemplate rest = new RestTemplate();
        FileSystemResource resource = new FileSystemResource(new File(filePath));
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
        param.add("headPicFile", resource); //相当于MultipartFile的名称
//        param.add("fileName", "test.jpg");

        String string = rest.postForObject(url, param, String.class);
        System.out.println(string);

        //rest.postForObject(url, param, String.class)也可以用下面的方法替换
//        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String,Object>>(param);
//        ResponseEntity<String> responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
//        System.out.println(responseEntity.getBody());
    }

转载自https://blog.csdn.net/mhmyqn/article/details/26395743

 

Java后端可以使用HttpURLConnection或者Apache HttpClient等库来发送formdata数据。以下是使用HttpURLConnection发送formdata数据的示例代码: ``` URL url = new URL("http://example.com/upload"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); String boundary = "---------------------------" + System.currentTimeMillis(); connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); OutputStream outputStream = connection.getOutputStream(); PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"), true); writer.append("--" + boundary).append("\r\n"); writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"test.txt\"").append("\r\n"); writer.append("Content-Type: text/plain; charset=UTF-8").append("\r\n"); writer.append("\r\n"); writer.flush(); File file = new File("test.txt"); FileInputStream inputStream = new FileInputStream(file); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } outputStream.flush(); inputStream.close(); writer.append("\r\n").flush(); writer.append("--" + boundary + "--").append("\r\n"); writer.close(); outputStream.close(); int responseCode = connection.getResponseCode(); ``` 在这个示例中,我们使用了HttpURLConnection来发送formdata数据。首先,我们需要设置请求方法为POST,并且设置DoOutput为true,以便我们可以向服务器发送数据。然后,我们设置Content-Type为multipart/form-data,并且指定boundary,boundary是一个随机字符串,用于分隔不同的formdata字段。接下来,我们获取输出流,并且使用PrintWriter来写入formdata数据。在这个示例中,我们只上了一个名为test.txt的文件,我们首先写入文件的Content-Disposition和Content-Type信息,然后写入文件的内容。最后,我们写入一个结束标记--boundary--,并且关闭输出流。最后,我们可以获取服务器的响应码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值