Javaでフォームデータを利用してファイルをアップロードする方法

Javaでは、Apache HttpClientライブラリを使用して、フォームデータ形式のファイルのアップロードを実現できます。簡単なサンプルコードを以下に示します。

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.File;
import java.io.IOException;

public class FileUploader {
    public static void main(String[] args) throws IOException {
        // 创建HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // 创建HttpPost对象,并设置URL
        HttpPost httpPost = new HttpPost("http://example.com/upload");

        // 创建MultipartEntityBuilder对象,并设置文件和其他参数
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addBinaryBody("file", new File("path/to/file"), ContentType.MULTIPART_FORM_DATA, "filename");
        builder.addTextBody("param1", "value1");
        builder.addTextBody("param2", "value2");

        // 将MultipartEntityBuilder构建的实体对象设置到HttpPost对象中
        HttpEntity entity = builder.build();
        httpPost.setEntity(entity);

        // 执行HttpPost请求,获取响应
        HttpResponse response = httpClient.execute(httpPost);

        // 解析响应
        HttpEntity responseEntity = response.getEntity();
        String responseBody = EntityUtils.toString(responseEntity);
        System.out.println(responseBody);

        // 关闭HttpClient
        httpClient.close();
    }
}

サンプルコードでは、MultipartEntityBuilderを使ってmultipart/form-dataエンティティを作成し、addBinaryBodyでファイルパラメータを追加し、addTextBodyでその他のパラメータを追加しています。次にそのエンティティをHttpPostオブジェクトに設定し、最後にHttpClientを使ってリクエストを実行しレスポンスを取得します。URL、ファイルパス、パラメータ名は実際に合わせて変更してください。

bannerAds