You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java POST请求向PHP传递表单数据及文件信息

解决PHP接收POST字段+文件上传的Java请求与Postman模拟方法

一、Postman模拟表单上传(含普通字段+文件)

要让PHP的$_POST/$_REQUEST拿到普通键值对,$_FILES拿到文件数据,必须发送multipart/form-data格式的请求,操作步骤:

  • 新建POST请求,填入目标PHP接口URL
  • 切换到「Body」标签,选择「form-data」类型
  • 添加普通文本参数:
    • 键名填p_rootdir、p_username、f_name等你需要的字段,类型选「Text」,对应填入值
  • 添加文件参数:
    • 键名填p_up_file(和PHP里$_FILES['p_up_file']的键完全一致),类型切换为「File」,选择本地要上传的文件

发送请求后,PHP就能正常从$_POST/$_REQUEST获取普通字段,从$_FILES['p_up_file']拿到文件的name、tmp_name等信息。

二、Java发送带普通字段+文件的POST请求

你之前用的UrlEncodedFormEntity仅支持application/x-www-form-urlencoded格式的普通键值对,无法传递文件。需要用Apache HttpClient的MultipartEntityBuilder构建multipart/form-data格式的请求实体,代码示例(基于HttpClient 4.x):

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class PhpUploadRequest {
    public static void main(String[] args) {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://localhost:8080/WebService/test.php");

        try {
            // 构建multipart请求实体
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();

            // 添加普通文本参数(对应PHP的$_POST/$_REQUEST)
            builder.addPart("f_name", new StringBody("Foo", StandardCharsets.UTF_8));
            builder.addPart("l_name", new StringBody("Bar", StandardCharsets.UTF_8));
            builder.addPart("p_rootdir", new StringBody("/path/to/root", StandardCharsets.UTF_8));
            builder.addPart("p_username", new StringBody("test_user", StandardCharsets.UTF_8));
            // 若P_TOKEN_KEY是常量(比如值为"token"),添加对应键值对
            builder.addPart("token", new StringBody("your_token_value", StandardCharsets.UTF_8));

            // 添加文件参数(对应PHP的$_FILES['p_up_file'])
            File uploadFile = new File("path/to/your/test.txt");
            builder.addPart("p_up_file", new FileBody(uploadFile));

            // 设置请求实体
            post.setEntity(builder.build());

            // 执行请求
            HttpResponse response = client.execute(post);
            // 按需处理响应内容
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            client.getConnectionManager().shutdown();
        }
    }
}

关键说明:

  • MultipartEntityBuilder会自动处理multipart/form-data的格式边界,PHP能正确解析出普通字段到$_POST/$_REQUEST,文件到$_FILES
  • FileBody用于包装要上传的文件,键名p_up_file必须和PHP代码中的键完全匹配
  • 确保项目引入Apache HttpClient相关依赖(如httpclient、httpmime包)

内容的提问来源于stack exchange,提问作者casualsurfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:47:16