我有这样定义端点弹簧启动休息服务:如何从春天启动终端流媒体内容的JavaScript客户端
@RequestMapping(value = "...", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE) //and octet for videos
@ResponseBody
public ResponseEntity<byte[]> get(...) {
//get image as byte array and return
}
而且在JavaScript客户端(角):
var headers = {headers : {..., "Accept":"image/jpeg"}}
var response = $http.get(...);
obj.imageSrc = 'data:image/jpg;base64,' + response;
obj.Image = new Image();
obj.Image.src = obj.imageSrc;
我需要
我认为这将端点像一个文件服务器上的普通图像文件,使CL我们可以做一些事情(因为这个问题的范围之外的原因,它实际上并不是一个用URL访问的原始图像)。显然这不是这种情况 - 字节数组必须转换为base64(有没有办法解决这个问题,因为数组变得更大),这有旋转图像的效果。我错误地认为从javascript中获取像这样的图像很容易:(
其次,这样做意味着javascript必须下载整个数组。有没有一种方法可以定义允许的端点流使JavaScript可以在块得到它(我想象Spring和JS具有实用功能,将处理呢?)
基本的根本问题
如何在春季正确地实现这个使要尽可能的Javascript友好?铭记我想同时提供两个图像(〜5MB)和视频(〜100MB)
在此先感谢。
编辑 也许我应该使用FileResourceStream作为返回类型?不知道这是否是“正确”的方式。
为什么你必须在你的js中使用数据url?如果你直接使用你的控制器的URL作为src,你不需要base64编码,你可以返回“原始”字节....编辑:你应该让你的控制器方法目录写入响应输出流和返回无效.. – joshiste