C# 使用AmazonS3在Chrome、Firefox、Safari和IE中强制下载MP3
有没有办法强制从AmazonS3下载MP3文件 我的剃须刀中有一个下载按钮:C# 使用AmazonS3在Chrome、Firefox、Safari和IE中强制下载MP3,c#,asp.net-mvc,amazon-s3,browser,http-headers,C#,Asp.net Mvc,Amazon S3,Browser,Http Headers,有没有办法强制从AmazonS3下载MP3文件 我的剃须刀中有一个下载按钮: <td> <a href="@t.S3PreSignedUrl" class="js_recordingDownloadButton document-link btn btn-info btn-block br2 btn-xs fs12 @Html.Raw(t.S3PreSignedUrl.IsNullOrWhiteSpace() ? "disabled" : ""
<td>
<a href="@t.S3PreSignedUrl" class="js_recordingDownloadButton document-link btn btn-info btn-block br2 btn-xs fs12 @Html.Raw(t.S3PreSignedUrl.IsNullOrWhiteSpace() ? "disabled" : "")" target="_blank" data-container="body" data-toggle="tooltip" title="@t.OriginalFilename" type="@t.MimeType" download>
<span class="fa fa-cloud-download fs12"></span>
</a>
</td>
当前,当您单击它时,会打开另一个浏览器窗口,并开始使用模式自动播放:
<div id="js_PlayRecordingPopup" class="popup-basic mfp-with-anim modalPopup">
<div class="panel">
<div class="admin-form">
<div class="panel-heading">
<span class="panel-title">
<i class="fa fa-play"></i> Play Recording
</span>
</div>
</div>
<div class="panel-body bt0 text-center p25">
<p class="popupInfo fs12 mb5">Playing: <b class="text-info js_playingTitle"></b></p>
<p class="popupInfo fs12">Filename: <b class="text-info js_playingFileName"></b></p>
<div class="summaryBox popupSummary text-center audioContainerBox">
<audio controls controlsList="nodownload" id="audRecording">
Your browser does not support the audio element.
</audio>
</div>
</div>
<div class="panel-footer">
<div class="text-center">
<input type="button" class="btn btn-primary" value="Done" data-bind="click: function(){ var sound = document.getElementById('audRecording'); if(sound != undefined) { sound.pause(); sound.currentTime = 0; } $.magnificPopup.close(); }">
</div>
</div>
</div>
<button title="Close (Esc)" type="button" class="mfp-close" data-bind="click: function(){ var sound = document.getElementById('audRecording'); if(sound != undefined) { sound.pause(); sound.currentTime = 0; }}">×</button>
</div>
播放录音
播放:
文件名:
内容类型:application/octet stream
的响应中更改内容类型。同时还设置内容配置:附件;filename=“filename.mp3”
。确保文件名使用中定义的编码
下载
属性,但您没有提供文件名。应该这样使用:。如果这行得通,你可以把他的密码倒过来
我一遍又一遍地问。不,您不能更改浏览器对文件下载的决定。真的,所以我不能让它强制下载?不,不是以用户友好的方式(您可以说,对于糟糕的用户体验,文件类型未知)。如果你可以的话,这将是一个安全问题好的,谢谢你,所以我最好保持原样,它在一个新的选项卡中打开文件,并播放文件。如果右键单击播放机,则可以根据需要保存该播放机。查看ContentDisposition(在System.Net.Mime中),它是一个http头,允许浏览器知道如何处理返回值,浏览器可以完全自由地忽略它,并按照它喜欢的方式处理文件。当你点击下载时,我已经检查了HTTP头,它会在一个新选项卡中打开,HTML5播放器会自动启动。标题中有这样的内容:contentdisposition:inline;filename=rain-01.mp3
同样在download
上,从技术上讲,您不需要提供download=“filename”,因为当您单击它时,浏览器会加载类似以下内容的html5播放器:
`
<td>
<a href="https:url/Audio/Recordings/TES/39e7ca51-1ac8-f395-3ae6-ff814dbde6c3/39e7ca51-e77c-65f1-c88e-47fe20f67ee1/o_1cj5s0tntp3aa1011o51tlrd8ba.mp3?X-Amz-Expires=86400&response-content-disposition=inline%3B%20filename%3Drain-01.mp3&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOHIWJAIQSFECYZQ/20180724/eu-west-1/s3/aws4_request&X-Amz-Date=20180724T104420Z&X-Amz-SignedHeaders=host&X-Amz-Signature=02a5febff28eed31646a37fea0b8da7d7bcf4b0ffe9a3365d31a0ac3f0b2cabb" class="js_recordingDownloadButton document-link btn btn-info btn-block br2 btn-xs fs12 " target="_blank" data-container="body" data-toggle="tooltip" title="rain-01.mp3" type="audio/mp3" download>
<span class="fa fa-cloud-download fs12"></span>
</a>
</td>