为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA POST 请求带有文件和参数的 MultiFormData

JAVA POST 请求带有文件和参数的 MultiFormData

慕村9548890 2023-08-16 17:24:50
我正在尝试使用“multipart/form-data”发出 POST 请求,我需要发布一个文件(下面的代码)和 4 个参数(名称、类别...)所有字符串。我已经可以使用下面的代码发送文件,但不能使用参数。    // open a URL connection to the Servlet    FileInputStream fileInputStream = new FileInputStream(sourceFile);    URL url = new URL(upLoadServerUri);    // Open a HTTP  connection to  the URL    conn = (HttpURLConnection) url.openConnection();    conn.setDoInput(true); // Allow Inputs    conn.setDoOutput(true); // Allow Outputs    conn.setUseCaches(false); // Don't use a Cached Copy    conn.setRequestMethod("POST");    conn.setRequestProperty("Connection", "Keep-Alive");    conn.setRequestProperty("ENCTYPE", "multipart/form-data");    conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);    conn.setRequestProperty("fileToUpload", fileName);    dos = new DataOutputStream(conn.getOutputStream());    dos.writeBytes(twoHyphens + boundary + lineEnd);    dos.writeBytes("Content-Disposition: form-data; name=\"fileToUpload\";filename=" + fileName + "" + lineEnd);    dos.writeBytes(lineEnd);    // create a buffer of  maximum size    bytesAvailable = fileInputStream.available();    bufferSize = Math.min(bytesAvailable, maxBufferSize);    buffer = new byte[bufferSize];    // read file and write it into form...    bytesRead = fileInputStream.read(buffer, 0, bufferSize);    while (bytesRead > 0) {        dos.write(buffer, 0, bufferSize);        bytesAvailable = fileInputStream.available();        bufferSize = Math.min(bytesAvailable, maxBufferSize);        bytesRead = fileInputStream.read(buffer, 0, bufferSize);    }但是服务器从来不注册参数,我该如何解决这个问题?
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

也许您应该POST像 forrowing 演示代码一样构建请求?希望能帮助到你。


### Send a form with the text and file fields

POST https://httpbin.org/post

Content-Type: multipart/form-data; boundary=WebAppBoundary


--WebAppBoundary

Content-Disposition: form-data; name="Name"


myName


--WebAppBoundary

Content-Disposition: form-data; name="category"


myCategory


--WebAppBoundary

Content-Disposition: form-data; name="data"; filename=".gitignore"

Content-Type: application/json


< ./.gitignore

--WebAppBoundary--


<> 2019-09-23T045805.200.json


###


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信