Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建包含多部分文件上载的post请求_Java_Http_Multipartform Data_Multipart - Fatal编程技术网

Java 创建包含多部分文件上载的post请求

Java 创建包含多部分文件上载的post请求,java,http,multipartform-data,multipart,Java,Http,Multipartform Data,Multipart,我正在写一个简单的片段,它发送一个简单的post请求 目前,我正在构建如下请求: // Construct data String data = URLEncoder.encode("param1", "UTF-8") + "=" + URLEncoder.encode("val1", "UTF-8"); data += "&" + URLEncoder.encode("param2", "UTF-8") + "=" + URLEncoder.encode("va

我正在写一个简单的片段,它发送一个简单的post请求

目前,我正在构建如下请求:

    // Construct data
    String data = URLEncoder.encode("param1", "UTF-8") + "=" + URLEncoder.encode("val1", "UTF-8");
    data += "&" + URLEncoder.encode("param2", "UTF-8") + "=" + URLEncoder.encode("val2", "UTF-8");

    // Send data
    URL url = new URL("http://server:8080/servlet/upload");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(data);
    wr.flush();

    // do stuff with response....
到目前为止,这是可行的。但是我需要添加一个文件上传作为一个多部分POST请求。
我该怎么做?如果可能的话,我希望避免使用commons中的
HttpClient

至此,您需要使用和中指定格式的数据构造输出流。这是大量的工作,我不打算发布一个启动代码示例,抱歉:)但是RFC包含清晰的信息和几个示例,说明数据应该是什么样子。这是绝对可行的。

说到这一点,您需要使用和中指定格式的数据构建输出流。这是大量的工作,我不打算发布一个启动代码示例,抱歉:)但是RFC包含清晰的信息和几个示例,说明数据应该是什么样子。这是绝对可行的。

目前,您根本没有使用HTTP。如果你打算写一篇博文,你需要做的第一件事就是确保你发送了正确的头等等,这样你实际上是在进行HTTP连接。您需要遵循RFC1867()将文件内容正确编码到您的帖子中。这并不容易,这就是为什么有图书馆为你做这件事。所以我不得不问:为什么要避免HttpClient?我一直用它来达到这个目的。它可靠、完整、性能优良。您是否缺少(内存/磁盘)空间?

目前,您根本不使用HTTP。如果你打算写一篇博文,你需要做的第一件事就是确保你发送了正确的头等等,这样你实际上是在进行HTTP连接。您需要遵循RFC1867()将文件内容正确编码到您的帖子中。这并不容易,这就是为什么有图书馆为你做这件事。所以我不得不问:为什么要避免HttpClient?我一直用它来达到这个目的。它可靠、完整、性能优良。你(内存/磁盘)空间不足吗?

试试这个,因为我的情况就是这样

File f = new File(filePath);
PostMethod filePost = new PostMethod(url);
Part[] parts = { new FilePart("file", f) };
filePost.setRequestEntity(new MultipartRequestEntity(parts,
filePost.getParams()));
HttpClient client = new HttpClient();
status = client.executeMethod(filePost);
logger.info("upload status: " + status);

试试这个,因为这在我的情况下有效

File f = new File(filePath);
PostMethod filePost = new PostMethod(url);
Part[] parts = { new FilePart("file", f) };
filePost.setRequestEntity(new MultipartRequestEntity(parts,
filePost.getParams()));
HttpClient client = new HttpClient();
status = client.executeMethod(filePost);
logger.info("upload status: " + status);

这段代码片段对我很有用:


它没有任何外部依赖项,只有约150行代码(包括注释),比Apache HttpClient库更易于处理。

这段代码片段对我很有用:


它没有任何外部依赖项,只有约150行代码(包括注释),比Apache HttpClient库更容易处理。

为没有HTML部分的相同故事添加了RFC 2388:)为没有HTML部分的相同故事添加了RFC 2388:)我确实有一些集成问题,但是如果实现请求编码更容易,我将使用一个外部库。谢谢:)我确实有一些集成问题,但是如果实现请求编码更容易,我将使用外部库。谢谢:)