2016-05-13 3 views
0

Я пишу пользовательскую конечную точку привода Springboot, и я хотел бы вернуть файл. Однако я не могу найти способ вернуть ничего, кроме строки JSON.Конечная точка Springboot для возврата Файл

Моя конечная точка:

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();  
    } 
} 

Когда я получить доступ к локальному: 8080/custoendpoint, я получаю путь моего файла ...

Любую идею?

ответ

0

Вместо того, чтобы осуществлять 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()); 
    } 

} 
Смежные вопросы