2016-01-24 78 views
3

我爲自己使用Go構建了一個簡單的服務器,運行時遇到了一些奇怪的問題。從POST請求中返回視頻

我已經創建了一個路由「/ transcoding」,用戶可以在其中用多部分視頻文件發出POST HTTP請求並接收修改後的視頻。

我遇到的問題是,當在響應中返回視頻時,它似乎無法在Chrome/Safari/Firefox中自動播放。

我知道正在返回的視頻是有效的,但因爲如果我使用curl/httpie或保存將content-type設置爲附件,則生成的文件可以正常播放。

這是可能與POST-GET-REDIRECT?

http -f POST http://localhost:8080/transcode [email protected]~/Downloads/sample.mp4 

HTTP/1.1 200 OK 
Accept-Ranges: bytes 
Content-Disposition: attachment; filename=output.mp4 
Content-Length: 398037 
Content-Type: video/mp4 
Date: Sun, 24 Jan 2016 22:00:00 GMT 
Last-Modified: Sun, 24 Jan 2016 22:00:00 GMT 



+-----------------------------------------+ 
| NOTE: binary data not shown in terminal | 
+-----------------------------------------+ 

上面的示例顯示我已經適當地設置了Content-Length和Content-Type。瀏覽器將顯示視頻播放器,但沒有播放。 (如果我拖放保存的文件,它會播放)

+9

刪除'Content-Disposition:attachment; filename = output.mp4'頭,它強制使用給定的文件名進行下載。 – elithrar

回答

0

「Content-Disposition:attachment」在這種情況下不適用。 The MDN has a good description

在常規的HTTP響應,內容處置響應頭是指示如果內容預計將在瀏覽器內聯顯示,即,作爲網頁或Web的一部分的標頭頁面或作爲附件下載並保存在本地。

如果您希望瀏覽器播放視頻,請刪除標題或將值更改爲「內聯」。