Spring Boot MVC如何将文件发送给浏览器/用户

时间:2015-09-29 11:46:56

标签: java spring spring-mvc spring-boot

我的实体看起来像这样:

@Entity
@Table(name = "ATTACHMENT")
public class Attachment extends JpaModel{

    @Column(name="FILE")
    private byte[] file;

    public byte[] getFile() {
        return file;
    }

    public void setFile(byte[] file) {
        this.file = file;
    }

    // Other properties and setters and getters
}

但是,在我的字节中,如何告诉我的Spring控制器将其作为文件返回?

此致

1 个答案:

答案 0 :(得分:2)

这应该有效:

@RequestMapping("/attachment")
public ResponseEntity<byte[]> getAttachment() throws IOException {
    Attachment attachment = null; // Retrieve your attachment somehow
    return ResponseEntity.ok().contentType(MediaType.TEXT_PLAIN).body(attachment.getFile());
}

或者你可以使用它:

@ResponseBody
@RequestMapping("/attachment", produces={ /* Types of files */ })
public byte[] getAttachment() {
    Attachment attachment = null; // Retrieve your attachment somehow
    return attachment.getFile();
}

使用第二种方法,您必须在produces的{​​{1}}参数中设置附件的可能类型。然后,客户端必须在@RequestMapping标题中请求内容类型。

第一个示例允许您根据附件设置内容类型(我假设您将以某种方式将其与内容一起存储在数据库中),这可能就是您所需要的。