Java를 사용한 HTTP 서버 파일 업로드
소개
이 문서에서는 Java 클라이언트의 HTTP 서버. 우리는 POST 요청 내에서 매개변수와 파일을 결합하는 간단하고 무료 솔루션을 제공하는 것을 목표로 합니다.
Multipart/Form-Data Encoding
혼합 POST 콘텐츠(바이너리 및 문자 데이터), 다중 부분/양식 데이터 인코딩이 일반적으로 사용됩니다. 데이터는 각각 고유한 헤더와 본문을 포함하는 섹션으로 나누어집니다.
Java 솔루션
다음 코드는 직접 HTTP 연결을 사용하여 파일과 매개변수를 업로드하는 방법을 보여줍니다. 타사 라이브러리 없음:
<code class="java">// Parameters String url = "http://example.com/upload"; String param = "value"; // File paths File textFile = new File("/path/to/file.txt"); File binaryFile = new File("/path/to/file.bin"); // Generate unique boundary value String boundary = Long.toHexString(System.currentTimeMillis()); // Create connection URLConnection connection = new URL(url).openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); // OutputStream for writing data try (OutputStream output = connection.getOutputStream(); PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true)) { // Write parameter writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"param\"").append(CRLF); writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF); writer.append(CRLF).append(param).append(CRLF).flush(); // Write text file writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"textFile\"; filename=\"" + textFile.getName() + "\"").append(CRLF); writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF); // Ensure file is saved using this charset writer.append(CRLF).flush(); Files.copy(textFile.toPath(), output); output.flush(); writer.append(CRLF).flush(); // Write binary file writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"binaryFile\"; filename=\"" + binaryFile.getName() + "\"").append(CRLF); writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(binaryFile.getName())).append(CRLF); writer.append("Content-Transfer-Encoding: binary").append(CRLF); writer.append(CRLF).flush(); Files.copy(binaryFile.toPath(), output); output.flush(); writer.append(CRLF).flush(); // End multipart/form-data writer.append("--" + boundary + "--").append(CRLF).flush(); } // Get HTTP response code int responseCode = ((HttpURLConnection) connection).getResponseCode(); System.out.println(responseCode);</code>
추가 참고 사항
참조
위 내용은 타사 라이브러리에 의존하지 않고 순수 Java를 사용하여 HTTP 서버에 파일과 매개변수를 업로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!