Java - 通过 HTTP 服务器发送文件

标签 java rest https httpserver

我使用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查看不同后缀的内容类型列表。

关于Java - 通过 HTTP 服务器发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66875441/

相关文章:

.net - 通过 Rally rest .net api 提交缺陷时如何设置自定义 WebLink 字段值?

asp.net - 在 azure 上的 asp.net vnext 网站上禁用端口 80

https - Dart/Redstone - HTTPS 连接

java - 为什么在java中有两种使用线程的方式?

java - 如何在netbeans项目中导入zip文件

java - 禁用 HTML 输入时的 NullPointer

api - 编辑冲突和 409 与 412 响应

java - Spring Boot 中的子域路由

python - 如何使用 python-rtkit 在 rt 中创建票证

asp.net - 捕获 SSL 证书请求错误以便重定向到正确的站点