java客户端通过http发送POST请求上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java客户端通过http发送POST请求上传文件相关的知识,希望对你有一定的参考价值。

java客户端代码:
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.net.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.*;
public class Upload

public Upload()
String filePath="D:\\DataSocketServer.java";
String fileName="DataSocketServer.java";
try
URL url=new URL("http://localhost:8080//TestServlet3");
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
BufferedOutputStream out=new BufferedOutputStream(connection.getOutputStream());
File file=new File(filePath);
FileInputStream fis=new FileInputStream(file);
byte[] bytes=new byte[1024];
int numReadByte=0;
while((numReadByte=fis.read(bytes,0,1024))>0)
out.write(bytes,0,numReadByte);

out.flush();
fis.close();
catch(Exception e)
e.printStackTrace();


public static void main(String[] args)
new Upload();



Servlet代码:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class TestServlet3 extends HttpServlet

private static final long serialVersionUID=1L;
public void init(ServletConfig config) throws ServletException
super.init(config);

public void destroy()
super.destroy();

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
doPost(request,response);


public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
BufferedInputStream in=new BufferedInputStream(request.getInputStream());
FileOutputStream fos=new FileOutputStream(new File("J:\\aaa.java"));
byte[] inputByte = new byte[1024];
int length=0;
while((length=in.read(inputByte,0,inputByte.length))>0)
fos.write(inputByte,0,length);
fos.flush();

fos.close();


为什么java客户端上传不了文件。我试了下载可以,上传不可以。

参考技术A 这样的写法,是直接socket的做法。

如果是HTTP的,要按HTTP的协议进行。先了解一下multi-part的post

java发送post请求传送文本和文件

单一或多个普通文本参数我会,单一或多个上传文件的参数我也会,但是混合两种就死活不会了。
例如 jsp :
<form action="<%=request.getContextPath()%>/servlet/SimpleUpload" enctype="multipart/form-data"
method="post">
商户ID:<input type="text" name="gShopID" value="1234"><br>
商户验证码:<input type="text" name="validateString" value="abcdefg"><br>
上传文件:<input type="file" name="multiItemsStock"><br>
<input type="submit" value="开始上传">
</form>
例如这个 表单,我要在java中发送post请求传这3个参数应该如何写呢???
发送post请求到别人的服务器,需要这3个参数。id有,validate有,上传的文件在d盘,上传的路径也有。就是不知道如何发送post请求。求例子(带注解的)!

参考技术A kankan 参考技术B 同样的问题,期待你找到好答案追问

已经解决了。呵呵。

以上是关于java客户端通过http发送POST请求上传文件的主要内容,如果未能解决你的问题,请参考以下文章

JAVA模拟HTTP post请求上传文件

HTTP POST请求报文格式分析与Java实现文件上传

java发送post请求传送文本和文件

Java文件上传下载

POST与PUT

上传文件时 HTTP POST 请求标头的默认值是啥(如果有)?