私は Spring Web MVC を使用しており、3D コンテンツを表示する Web ページのプラグインにバイナリ データを返すコントローラーを作成しました。このプラグインはモデルに STK ファイルを使用するため、*.stk URL に対してこの種のコンテンツを生成するように Web アプリケーションをセットアップしました。
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 - このリクエストで識別されたリソースは、リクエストの「accept」ヘッダーによると、受け入れられない特性を持つレスポンスしか生成できません。
アプリを localhost の tomcat サーバーにデプロイしました。
ブラウザにバイナリデータをダウンロードさせるために何をしなければならないかについてのアイデアはありますか?
PS!*.3do (3d オブジェクト) から *.stk に変更しました。3do では期待どおりに動作しましたが、プラグインがエラー (解釈が難しい) で失敗したため、URL 拡張子が問題であるかどうかを確認するために実験する必要があります...