Java - 通过 HTTP 服务器发送文件
Java - Sending file over HTTP Server
我使用 com.sun.net.httpserver
库制作了一个 HTML 服务器。我想发送一个jar文件给客户端让他们下载。
下面这个方法实际上是让客户端下载文件:
@Override
public void handle(HttpExchange httpExchange) {
File file = new File("Test.jar");
try {
httpExchange.sendResponseHeaders(200, file.length());
OutputStream outputStream = httpExchange.getResponseBody();
Files.copy(file.toPath(), outputStream);
outputStream.close();
} catch (IOException exception) {
exception.printStackTrace();
}
}
但它以 zip 格式发送 jar 文件。我如何让它作为 jar 文件发送?有没有更好的文件发送方式?
请尝试添加以下内容以获得正确的下载文件名:
httpExchange.getResponseHeaders().add("Content-Disposition", "attachment; filename=Test.jar");
您可能还想添加以下内容以获得正确的 content-type:
httpExchange.setAttribute(HTTPExchange.HeaderFields.Content_Type.toString(), "application/java-archive");
请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types 以获取不同后缀的内容类型列表。
我使用 com.sun.net.httpserver
库制作了一个 HTML 服务器。我想发送一个jar文件给客户端让他们下载。
下面这个方法实际上是让客户端下载文件:
@Override
public void handle(HttpExchange httpExchange) {
File file = new File("Test.jar");
try {
httpExchange.sendResponseHeaders(200, file.length());
OutputStream outputStream = httpExchange.getResponseBody();
Files.copy(file.toPath(), outputStream);
outputStream.close();
} catch (IOException exception) {
exception.printStackTrace();
}
}
但它以 zip 格式发送 jar 文件。我如何让它作为 jar 文件发送?有没有更好的文件发送方式?
请尝试添加以下内容以获得正确的下载文件名:
httpExchange.getResponseHeaders().add("Content-Disposition", "attachment; filename=Test.jar");
您可能还想添加以下内容以获得正确的 content-type:
httpExchange.setAttribute(HTTPExchange.HeaderFields.Content_Type.toString(), "application/java-archive");
请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types 以获取不同后缀的内容类型列表。