none
asp 论坛,帖子下面有附件,怎样能判定用户是否下载了附件,以及下载附件后扣除分数呢? RRS feed

  • 问题

  • asp ,vb, sql server的论坛,帖子下面有附件,怎样能判定用户是否下载了附件,并且实现下载附件后扣除分数呢?谢谢各位了。
    2009年10月13日 9:29

答案

  • <% 
    Response.Buffer = true
    Response.Clear
    dim url
    Dim fso,fl,flsize
    dim Dname
    Dim objStream,ContentType,flName,isre,url1

    '这里根据具体情况而不同,反正最终目的是要取得文件路径
    filename=request.QueryString("filename")
    url=server.MapPath("doc/"&filename)
    'url 就是文件的绝对文件路径了

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set fl=fso.getfile(url)
    flsize=fl.size
    flName=fl.name
    Set fl=Nothing
    Set fso=Nothing
    Set  objStream  =  Server.CreateObject("ADODB.Stream") 
    objStream.Open 
    objStream.Type  =  1 
    objStream.LoadFromFile  url 

    Select  Case  lcase(Right(flName,  4)) 
    Case  ".asf" 
         ContentType  =  "video/x-ms-asf" 
    Case  ".avi" 
         ContentType  =  "video/avi" 
    Case  ".doc" 
         ContentType  =  "application/msword" 
    Case  ".zip" 
         ContentType  =  "application/zip" 
    Case  ".xls" 
         ContentType  =  "application/vnd.ms-excel" 
    Case  ".gif" 
         ContentType  =  "image/gif" 
    Case  ".jpg",  "jpeg" 
         ContentType  =  "image/jpeg" 
    Case  ".wav" 
         ContentType  =  "audio/wav" 
    Case  ".mp3" 
         ContentType  =  "audio/mpeg3" 
    Case  ".mpg",  "mpeg" 
         ContentType  =  "video/mpeg" 
    Case  ".rtf" 
         ContentType  =  "application/rtf" 
    Case  ".htm",  "html" 
         ContentType  =  "text/html" 
    Case  ".txt" 
         ContentType  =  "text/plain" 
    Case  Else 
         ContentType  =  "application/octet-stream" 
    End  Select 

    Response.AddHeader  "Content-Disposition",  "attachment;  filename="  &  flName 
    Response.AddHeader  "Content-Length",  flsize 
    Response.Charset  =  "UTF-8" 
    Response.ContentType  =  ContentType 
    Response.BinaryWrite  objStream.Read 
    Response.Flush 
    response.Clear() 
    objStream.Close 
    Set  objStream  =  Nothing 
    %>  

     

    • 已标记为答案 newshine 2009年10月14日 1:55
    2009年10月14日 1:55

全部回复

  • 这样:down.asp?file=xxx 在download.asp里先执行删除分,然后执行下载
    【孟子E章】
    2009年10月13日 9:42
    版主
  • 将用户下载后保存用户标识和附件标识到一个多对多的表中
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年10月13日 9:44
    版主
  • <% 
    Response.Buffer = true
    Response.Clear
    dim url
    Dim fso,fl,flsize
    dim Dname
    Dim objStream,ContentType,flName,isre,url1

    '这里根据具体情况而不同,反正最终目的是要取得文件路径
    filename=request.QueryString("filename")
    url=server.MapPath("doc/"&filename)
    'url 就是文件的绝对文件路径了

    Set fso=Server.CreateObject("Scripting.FileSystemObject")
    Set fl=fso.getfile(url)
    flsize=fl.size
    flName=fl.name
    Set fl=Nothing
    Set fso=Nothing
    Set  objStream  =  Server.CreateObject("ADODB.Stream") 
    objStream.Open 
    objStream.Type  =  1 
    objStream.LoadFromFile  url 

    Select  Case  lcase(Right(flName,  4)) 
    Case  ".asf" 
         ContentType  =  "video/x-ms-asf" 
    Case  ".avi" 
         ContentType  =  "video/avi" 
    Case  ".doc" 
         ContentType  =  "application/msword" 
    Case  ".zip" 
         ContentType  =  "application/zip" 
    Case  ".xls" 
         ContentType  =  "application/vnd.ms-excel" 
    Case  ".gif" 
         ContentType  =  "image/gif" 
    Case  ".jpg",  "jpeg" 
         ContentType  =  "image/jpeg" 
    Case  ".wav" 
         ContentType  =  "audio/wav" 
    Case  ".mp3" 
         ContentType  =  "audio/mpeg3" 
    Case  ".mpg",  "mpeg" 
         ContentType  =  "video/mpeg" 
    Case  ".rtf" 
         ContentType  =  "application/rtf" 
    Case  ".htm",  "html" 
         ContentType  =  "text/html" 
    Case  ".txt" 
         ContentType  =  "text/plain" 
    Case  Else 
         ContentType  =  "application/octet-stream" 
    End  Select 

    Response.AddHeader  "Content-Disposition",  "attachment;  filename="  &  flName 
    Response.AddHeader  "Content-Length",  flsize 
    Response.Charset  =  "UTF-8" 
    Response.ContentType  =  ContentType 
    Response.BinaryWrite  objStream.Read 
    Response.Flush 
    response.Clear() 
    objStream.Close 
    Set  objStream  =  Nothing 
    %>  

     

    • 已标记为答案 newshine 2009年10月14日 1:55
    2009年10月14日 1:55
  • 呵呵,谢了
    2009年10月14日 1:56