如何配置码头处理程序以根据请求创建名称以下载文件
how to configure jetty handler to create a name upon request to download a file
我们有一个非常非常简单的 API 可以根据请求发送文件
服务器是:
public class Server {
public static void main(String... args) throws Exception {
// start the server
System.out.println("starting jetty...");
final org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server(80);
server.setHandler(new Handler());
server.start();
System.out.println("jetty server has started");
}
}
和处理程序:
public class Handler extends AbstractHandler {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
if(target.matches("/get")){
File file = getFile(); //assume filename is myFile.zip
byte[] bytes = FileUtils.readFileToByteArray(file);
response.getOutputStream().write(bytes);
response.flushBuffer();
}
}
}
当我从浏览器向 localhost:80/get
发出请求时,它保存了所需的文件,但浏览器将其命名为 get
需要进行哪些更改才能使请求将文件另存为 myFile.zip
?
您可以添加这样的文件名:
response.setHeader("Content-Disposition", "filename=myFile.xyz");
如果您希望浏览器打开保存对话框添加附件:
response.setHeader("Content-Disposition", "attachment; filename=myFile.xyz");
我们有一个非常非常简单的 API 可以根据请求发送文件
服务器是:
public class Server {
public static void main(String... args) throws Exception {
// start the server
System.out.println("starting jetty...");
final org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server(80);
server.setHandler(new Handler());
server.start();
System.out.println("jetty server has started");
}
}
和处理程序:
public class Handler extends AbstractHandler {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
if(target.matches("/get")){
File file = getFile(); //assume filename is myFile.zip
byte[] bytes = FileUtils.readFileToByteArray(file);
response.getOutputStream().write(bytes);
response.flushBuffer();
}
}
}
当我从浏览器向 localhost:80/get
发出请求时,它保存了所需的文件,但浏览器将其命名为 get
需要进行哪些更改才能使请求将文件另存为 myFile.zip
?
您可以添加这样的文件名:
response.setHeader("Content-Disposition", "filename=myFile.xyz");
如果您希望浏览器打开保存对话框添加附件:
response.setHeader("Content-Disposition", "attachment; filename=myFile.xyz");