$name = "image.jpg"; 
$dbn = "location/to_file/".$name.""; 
$fp = fopen($dbn, "rb"); $sdata = fread($fp, filesize($dbn)); 
fclose($fp); 
if (strstr($_SERVER["HTTP_USER_AGENT"],"MSIE 5.5")) 
{ $att = ""; } 
else 
{ $att = " attachment;"; } header('Cache-control: max-age=31536000'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-Length: '.filesize($dbn).''); header('Content-Type: application/download; name="'.$name.'"'); header('Content-Disposition:'.$att.' filename="'.$name.'"'); header('Content-Transfer-Encoding: binary'); 
echo $sdata; 

解决方案 »

  1.   

    搞定,谢谢 mikespook(Mike大懒猫)  .佩服佩服
      

  2.   


    下载任何文件(尤其是IE关联打开的)
    第一个文件连接处这么写
    <a name="download" 
    href="<%if 是会员 then response.write "download.asp?filename="  & myfilename%>">
    下载<%=myfilename%></a>第二个文件:
    <%
    Dim Stream
    Dim Contents
    Dim FileName
    Dim FileExt
    Const adTypeBinary = 1
    FileName = Request.QueryString("FileName")
    if FileName = "" Then
        Response.Write "无效文件名."
        Response.End
    End if
    ' 下面是不希望下载的文件
    FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
    Select Case UCase(FileExt)
        Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
            Response.Write "受保护文件,不能下载."
            Response.End
    End Select
    ' 下载这个文件
    Response.Clear
    Response.ContentType = "application/octet-stream"
    Response.AddHeader "content-disposition", "attachment; filename=" & FileName
    Set Stream = server.CreateObject("ADODB.Stream")
    Stream.Type = adTypeBinary
    Stream.Open
    Stream.LoadFromFile Server.MapPath(FileName)
    While Not Stream.EOS
        Response.BinaryWrite Stream.Read(1024 * 64)
    Wend
    Stream.Close
    Set Stream = Nothing
    Response.Flush
    Response.End
    %>
      

  3.   

    主要是ContentType设置问题
    文件夹?你给tar一下让别人载吧
      

  4.   

    我现在的想法是这样的:
    服务器上有一张图片,这张图片的一些信息在数据库中.
    当有人下载时,我把数据库中此图片信息做txt文档,和图片一起存到一个文件夹中,然后让人去下载整个包.现在可行的做法是,
    先生成一个图片信息的文本文件,
    然后mkdir一个包,
    再把两个文件移到包里,
    然后tar一下,
    最后再让人下载.可是,这样步骤很多.能不能跳开几步呢,比如这个压缩步骤?