return 文件的 Spring Boot 端点
Springboot endpoint to return File
我正在编写一个自定义的 Springboot 执行器端点,我想 return 一个文件。但是,除了 JSON 字符串之外,我找不到 return 任何其他方法。
我的端点是:
import java.io.File;
import java.net.URI;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.stereotype.Component;
@Component
public class MyEndPoint implements Endpoint<URI> {
@Override
public String getId() {
return "custoendpoint";
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isSensitive() {
return false;
}
@Override
public URI invoke() {
File f = new File("C:/temp/cars.csv");
return f.toURI();
}
}
当我访问 localhost:8080/custoendpoint 时,我收到我的文件的路径...
有什么想法吗?
与其实施 Endpoint
,不如实施 MvcEndpoint
。然后,您可以访问 HttpServletResponse
,您可以将文件内容复制到其中。例如:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
class CustomEndpoint implements MvcEndpoint {
@Override
public String getPath() {
return "/custom";
}
@Override
public boolean isSensitive() {
return false;
}
@Override
public Class<? extends Endpoint<?>> getEndpointType() {
return null;
}
@RequestMapping(method = RequestMethod.GET)
public void invoke(HttpServletResponse response)
throws ServletException, IOException {
FileCopyUtils.copy(new FileInputStream(new File("c:/temp/cars.csv")),
response.getOutputStream());
}
}
我正在编写一个自定义的 Springboot 执行器端点,我想 return 一个文件。但是,除了 JSON 字符串之外,我找不到 return 任何其他方法。
我的端点是:
import java.io.File;
import java.net.URI;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.stereotype.Component;
@Component
public class MyEndPoint implements Endpoint<URI> {
@Override
public String getId() {
return "custoendpoint";
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isSensitive() {
return false;
}
@Override
public URI invoke() {
File f = new File("C:/temp/cars.csv");
return f.toURI();
}
}
当我访问 localhost:8080/custoendpoint 时,我收到我的文件的路径...
有什么想法吗?
与其实施 Endpoint
,不如实施 MvcEndpoint
。然后,您可以访问 HttpServletResponse
,您可以将文件内容复制到其中。例如:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
class CustomEndpoint implements MvcEndpoint {
@Override
public String getPath() {
return "/custom";
}
@Override
public boolean isSensitive() {
return false;
}
@Override
public Class<? extends Endpoint<?>> getEndpointType() {
return null;
}
@RequestMapping(method = RequestMethod.GET)
public void invoke(HttpServletResponse response)
throws ServletException, IOException {
FileCopyUtils.copy(new FileInputStream(new File("c:/temp/cars.csv")),
response.getOutputStream());
}
}