我在apache服务器上有一个mp3.我希望在用户访问链接时将其下载为文件.而不是quicktime,或谷歌chromes媒体播放器将尝试流式传输.
有标题的解决方案吗?或者是唯一的选择,所以'右键单击另存为'?
编辑这是我的标题.Safari已经停止了流媒体,但是chrome已经停止了.Chrome似乎忽略了这一点:
我可以看到标题已正确更改:
Date Wed, 04 Aug 2010 00:14:35 GMT
Server Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.11
Last-Modified Tue, 03 Aug 2010 04:37:01 GMT
Etag "2bbd692-79597d-48ce3de3f5540"
Accept-Ranges bytes
Content-Length 7952765
Content-Disposition attachment
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type audio/mpeg
Run Code Online (Sandbox Code Playgroud)
标题中是否还有其他内容会导致此问题?
编辑我做了一些调查我发现:http : //www.google.com/support/forum/p/Chrome/thread?tid= 76de4f53f43f03d3 & hl= en看起来Chrome中可能存在一个错误,导致无法下载.
好的,所以我有这个代码,允许用户下载一首歌
$file = DIR_DOWNLOAD . $download_info->row['filename'];
$mask = basename($download_info->row['mask']);
$mime = 'application/octet-stream';
$encoding = 'binary';
if (!headers_sent()) {
if (file_exists($file)) {
header('Pragma: public');
header('Expires: 0');
header('Content-Description: File Transfer');
header('Content-Type: ' . $mime);
header('Content-Transfer-Encoding: ' . $encoding);
header('Content-Disposition: attachment; filename=' . ($mask ? $mask : basename($file)));
header('Content-Length: ' . filesize($file));
$file = readfile($file, 'rb');
Run Code Online (Sandbox Code Playgroud)
问题是,如果歌曲中有一个空格,就像sinsita happy 1 SONIFI.mp3用户只会下载一个名为的文本文件sinsita...任何想法如何解决这个问题
当我们在页面中为该文件提供链接时,如何获取我们在服务器上传的文件名?
我正在做的是,我在webview中提供带有文件链接的数据,所以每当用户点击链接需要从服务器下载时,因为我从服务器下载了这个文件,但问题是无法使用DownloadManager获取其确切的类型和名称.我想要这样

在上面看到我在test_androt中为我的文件提供了链接,当我点击它时会给dailog带有文件名的选项,当用户点击WebView URL链接时我不知道如何实现这个文件名.
编辑抱歉忘了提及我的网址是这样的
misc/dnload.php?t1=MzQ0MDA=&t2=MTY5NTUz&t3=MTY5NTUzMTMwMjEyMDNfcGhhcm1hY3kga2V5IGluZm8ucG5n&t4=MTMwMjEyMDM=
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我真的不明白.我试图在asp经典应用程序中上传文件,而不使用外部组件.我还想发布一些将存储在DB中的文本.文件上传完美,我正在使用此代码:Lewis E. Moten III上传没有COM v3的文件
问题是其他形式的输入字段.我使用的是UTF-8,但它们最终并不是UTF-8.即如果我使用Response.Write将它们打印出来,瑞典字符åä和ö将显示为问号.
我已经将文件保存为UTF-8(带有BOM),我已经添加了元标记来告诉页面它是UTF-8.我设置了Response.CharSet ="UTF-8".
从二进制转换为字符串的函数看起来像这样(这是我唯一能想到的可能是错误的地方,因为注释说它会拉出ANSI字符,但我认为它应该拉出Unicode字符):
Private Function CStrU(ByRef pstrANSI)
' Converts an ANSI string to Unicode
' Best used for small strings
Dim llngLength ' Length of ANSI string
Dim llngIndex ' Current position
' determine length
llngLength = LenB(pstrANSI)
' Loop through each character
For llngIndex = 1 To llngLength
' Pull out ANSI character
' Get Ascii value of ANSI character
' Get Unicode Character from Ascii
' Append character to results
CStrU …Run Code Online (Sandbox Code Playgroud) forms iis-7 multipartform-data character-encoding asp-classic
我试图从我的网站下载文件名为GB2312%D5%D5%C6%AC.JPG的文件,一切顺利在IE9/Firefox中,但在谷歌浏览器中没有.
在谷歌浏览器中,此文件名将替换为我的下载页面名称(可能Chrome无法解码文件名).
要查看Chrome是否要解码文件名,我尝试使用另一个字符串GB2312%2C%2D%2E.txt作为文件名,firefox/IE9仍然按预期工作,但谷歌Chrome将尝试解码此文件名(替换% 2D带' - ').
如何防止Google Chrome解码文件名?如果我能在服务器端解决这个问题,那就更好了(PHP)
以下行是我的服务器生成的响应标头.
**Response Headers:**
Cache-Control:must-revalidate, post-check=0, pre-check=0, private
Connection:keep-alive
Content-Description:File Transfer
Content-Disposition:attachment; filename="GB2312%D5%D5%C6%AC.JPG"
Content-Length:121969
Content-Transfer-Encoding:binary
Content-Type:application/force-download; charset=UTF-8
Date:Wed, 18 Apr 2012 03:32:30 GMT
Expires:0
Pragma:public
Server:nginx/1.1.5
X-Powered-By:PHP/5.3.8
Run Code Online (Sandbox Code Playgroud) 我想发送一个带有附加文件的POST请求,尽管有些字段名称中包含Unicode字符.但是服务器没有正确接收它们,如下所示:
>>> # normal, without unicode
>>> resp = requests.post('http://httpbin.org/post', data={'snowman': 'hello'}, files={('kitten.jpg', open('kitten.jpg', 'rb'))}).json()['form']
>>> resp
{u'snowman': u'hello'}
>>>
>>> # with unicode, see that the name has become 'null'
>>> resp = requests.post('http://httpbin.org/post', data={'?': 'hello'}, files={('kitten.jpg', open('kitten.jpg', 'rb'))}).json()['form']
>>> resp
{u'null': u'hello'}
>>>
>>> # it works without the image
>>> resp = requests.post('http://httpbin.org/post', data={'?': 'hello'}).json()['form']
>>> resp
{u'\u2603': u'hello'}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我正在使用 puppeteer 下载大量文件,但我需要在下载完成之前或之后知道每个文件的名称。观看文件夹中的文件更改并不能解决我的问题,因为有很多进程同时下载文件并且现在有办法匹配它们。
我一直在尝试为每个文件设置一个自定义下载路径,但是 Puppeteer 做了一些奇怪的事情,有些下载到那个文件夹,有些下载到 /Downloads。
所以,我想知道是否有办法在下载之前知道名称或在下载之前设置文件的名称。这样我就可以通过代码正确匹配它。
注意:文件是通过 JS 下载的,即当点击按钮时。由于它是自动生成的,因此无法通过抓取来知道文件名。
场景:(在PHP中)我有一个表单提交,其中包含UTF-8编码的字符串($name)以支持国际字符.在提交表单(通过GET)后,我正在创建一个CSV下载文件.我希望文件的名称是字符串 + .csv ("$name.csv").对于西方字符集,我可以通过以下方式做到这一点:
header("Content-Disposition: attachment; filename=\"$name\"");
Run Code Online (Sandbox Code Playgroud)
但对于其他字符集,下载文件的名称是垃圾字母 + .csv(例如×œ×œ× ×›×•×ª×¨×ª.csv).我试图遵循RFC 2231做类似的事情:
header("Content-Disposition: attachment; filename*=UTF-8''$name");
Run Code Online (Sandbox Code Playgroud)
但我似乎有几个问题:
我需要$name编码以十六进制编码的八位字节的每个字符,如" This%20is%20%2A%2A%2Afun%2A%2A%2A".有没有人有正确的功能?我编写了以下代码,但我不认为这是正确的:
$fileName = encodeWordRfc2231($name) . ".csv";
header("Content-Disposition: attachment; filename*=UTF-8''$fileName");
function &encodeWordRfc2231($word) {
$binArray = unpack("C*", $word);
foreach ($binArray as $chr) {
$hex_ary[] = '%' . sprintf("%02X", base_convert($chr, 2, 16));
}
return implode('', $hex_ary);
}
Run Code Online (Sandbox Code Playgroud)有没有人有这方面的经验,可以让我走上正确的道路?
我有一个MVC控制器方法定义如下:
public ActionResult GetPdf(string filename)
{
var pdfDownload = File("~/Content/GeneratedReports/report1.pdf", "application/pdf", Server.UrlEncode("report1.pdf"));
return pdfDownload;
}
Run Code Online (Sandbox Code Playgroud)
如果我将第一个参数更改为托管在单独的云服务器上的服务器的URL,那么我会收到错误:
'MY FILE PATH'不是有效的虚拟路径.
我只是希望我的客户能够下载文件.这似乎比它需要的复杂得多.
我有一个指向PDF的URL.我希望我的客户在不点击任何内容的情况下下载该pdf.(下载将在成功的服务响应后启动)
为什么这么难,我该如何解决?
我不在乎解决方案是JS还是MVC ....
我正在尝试为我的用户生成并返回文件.某些文件名包含unicode字符:aäa.pdf.当尝试在IE 9中下载它们时,文件名被破坏,下载如下所示:

在Chrome中,它按预期工作.这是return语句:
return File(fileStream: stream,
contentType: System.Net.Mime.MediaTypeNames.Application.Octet,
fileDownloadName: myModel.Name + "." + pub.OutputFileType);
Run Code Online (Sandbox Code Playgroud)
我该如何解决IE 9的问题?
.net utf-8 filestreamresult internet-explorer-9 asp.net-mvc-3