Чтобы указать JAX-RS, что вызов данного метода приводит к загрузке файла, необходимо аннотировать метод
@Produces("content/type")
@Produces("content/type")
, например @Produces("text/plain")
@Produces("text/plain")
для случая с текстовым файлов. Также необходимо указать Content-Disposition
Content-Disposition
в ответе сервера.
Код примера:
package ru.mydesignstudio.rest;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@Path("/hello")
public class RestService {
@GET
@Path("/file")
@Produces("text/plain")
public Response getFile() throws IOException {
File file = new File("test.txt");
try (BufferedWriter writer = new BufferedWriter(
new FileWriter(file))) {
writer.write("Hello from JAX-RS REST Service!");
writer.flush();
writer.close();
}
return Response.ok().
entity(file).
header("Content-disposition", "attachment; filename=\"test-file.txt\"")
.build();
}
}
package ru.mydesignstudio.rest;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@Path("/hello")
public class RestService {
@GET
@Path("/file")
@Produces("text/plain")
public Response getFile() throws IOException {
File file = new File("test.txt");
try (BufferedWriter writer = new BufferedWriter(
new FileWriter(file))) {
writer.write("Hello from JAX-RS REST Service!");
writer.flush();
writer.close();
}
return Response.ok().
entity(file).
header("Content-disposition", "attachment; filename=\"test-file.txt\"")
.build();
}
}
package ru.mydesignstudio.rest; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; @Path("/hello") public class RestService { @GET @Path("/file") @Produces("text/plain") public Response getFile() throws IOException { File file = new File("test.txt"); try (BufferedWriter writer = new BufferedWriter( new FileWriter(file))) { writer.write("Hello from JAX-RS REST Service!"); writer.flush(); writer.close(); } return Response.ok(). entity(file). header("Content-disposition", "attachment; filename=\"test-file.txt\"") .build(); } }
Результат:
