我正在使用 Spring Web MVC 并编写了一个控制器,它将二进制数据返回到显示 3D 内容的网页中的插件。这个插件使用 STK 文件作为它的模型,所以我设置了我的 webapp 来为 *.stk URLs 生成这种内容
springDispatcherServlet 设置为在我的 web.xml 中处理 *.stk 请求
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>*.stk</url-pattern>
</servlet-mapping>
我的控制器如下所示:
@Controller
@RequestMapping(value="/3dobject", produces="application/octet-stream")
public class Object3DController {
@Autowired
private DesignerService designerService;
@RequestMapping(value="/{article}.stk", method=RequestMethod.GET, headers="Accept: application/octet-stream")
public void getObject3DForArticle(HttpServletResponse response, @PathVariable String article) throws IOException {
response.setContentType("application/octet-stream");
Object3D object = designerService.get3DModelForArticleNumber(article, LanguageCode.NORWEGIAN);
byte[] content = object.getContent();
response.setContentLength(content.length);
IOUtils.write(content, response.getOutputStream());
}
}
当我尝试通过浏览器访问数据时,出现以下错误:
HTTP 状态 406 - 此请求标识的资源只能生成具有根据请求“接受”标头不可接受的特征的响应。
我已将我的应用程序部署到本地主机上的 tomcat 服务器。
关于使浏览器下载二进制数据我必须做什么的任何想法?
PS!我从 *.3do(3d 对象)更改为 *.stk。使用 3do 它按预期工作,但插件失败并出现错误(这很难解释),所以我必须进行试验以验证 URL 扩展是否重要......