aşağıdaki şekilde HTML5 özelliğini kullanarak bir ses/wav dışarı akışı için çalışıyorum: o tekrar ya da CurrentTime niteliğini yeniden konumlandırmak için imkansız gerçeği dışında,206 kodlu Grails'ten akış için ses dosyası nasıl sunulur?
<audio type="audio/wav" src="/sound/10/audio/full" sound-id="10" version="full" controls="">
</audio>
Bu Chrome'da oldukça iyi çalışıyor:
var audioElement = $('audio').get(0)
audioElement.currentTime
> 1.2479820251464844
audioElement.currentTime = 0
audioElement.currentTime
> 1.2479820251464844
aşağıdaki kodu kullanarak, bir Grails denetleyicisi ses dosyası ikram ediyorum:
def audio() {
File file = soundService.getAudio(...)
response.setContentType('audio/wav')
response.setContentLength (file.bytes.length)
response.setHeader("Content-disposition", "attachment;filename=${file.getName()}")
response.outputStream << file.newInputStream() // Performing a binary stream copy
response.status = 206
return false
}
Bu Grails olsa görünüyor i Yanlış ne olabileceğini
Request URL:http://localhost:8080/sound/10/audio/full
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:JSESSIONID=9395D8FFF34B7455F937190F521AA1BC
Host:localhost:8080
Range:bytes=0-3189
Referer:http://localhost:8080/cms/sound/10/edit
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Response Headersview source
Content-disposition:attachment;filename=full.wav
Content-Length:3190
Content-Type:audio/wav
Date:Wed, 19 Dec 2012 13:58:44 GMT
Server:Apache-Coyote/1.1
konusunda fikrin: Chrome'dan aşağıdaki çıkışından gördüğünüz gibi bir HTTP yanıtı 200 yerine 206 (Kısmi-İçerik) geri vermeyi s?
Teşekkürler, Amit.
ADDITION:
için kontrolör mantığı değiştirme:
response.status = 206
response.setContentType(version.mime)
response.setContentLength (file.bytes.length)
response.setHeader("Content-disposition", "attachment;filename=${file.getName()}")
response.outputStream << file.newInputStream() // Performing a binary stream copy
mü HTTP 206 (Kısmi-İçerik) Ancak Chrome ve Firefox hem ses dosyası çalmıyor dönen yardımı (söz yine Chrome'un bir 200 dosyayı aldığımda tepkinin aşağıdaki bilgi ile) ...
oynamak yaptı:
Request URL:http://localhost:8080/sound/10/audio/full
Request Headersview source
Accept-Encoding:identity;q=1, *;q=0
Range:bytes=0-
Referer:http://localhost:8080/cms/sound/10/edit
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Belki "response.status = 206" _before_ dosyasını düzenler misiniz? –
Bu kesinlikle 206 kodunu almamıza yardımcı oldu (curl ile damping başlıklarına). Fakat