解决方案 »

  1.   

    你可以参考csdn的做法
    点击下载,不管客户端有没有弹出下载的框(不管有没有保存文件),
    数据库都要插入一条记录,一个资源一个用户只有一条记录,这样就可以统计下载的次数了
    第一次下载需要积分,以后下载就不用了
      

  2.   

    <table width="60%"  border-bottom:#FF0000 solid 1px>
           <s:iterator value="dmList" var="vocab" status="status">
    <tr height=50px>
    <%
     //通过 dmno 获取文件 的 有关信息 然后 传到  loadfile.jsp
     //文件大小 保留在 本页面 
     %>
     
    <td align="left">[<font color="red"><s:property value="#vocab.dmtype"/></font>]</td>

    <td><font color=""><s:property value="#vocab.dmname"/></font></td>

    <td><s:property value="#vocab.filetype"/></td>

    <td><s:property value="#vocab.filesize"/> KB</td>

    <td>20<s:property value="#vocab.dmtime"/></td>

    <td><s:property value="#vocab.downloads"/> 次</td>

    <td align="right"><a href="examFileAction.action?filename=<s:property value="#vocab.dmname"/>&filetype=<s:property value="#vocab.filetype"/>&fileid=<s:property value="#vocab.dmno"/>"><img width=30px height=30px src="image/downloadimage/download.jpg"></a></td>
    </tr>
       </s:iterator>
          </table>
      

  3.   

    我觉得这个是业务逻辑的处理,跟你那段下载的代码没关系,
    首先有三张表:用户表(user), 资源表(res), 下载表(download, 分别引用user和res)
    点击下载后,如果download中不存在user和res关联的记录,就插入一条记录,已经存在就更新下载时间
    然后再根据res的id去download中统计下载的次数,就好了
      

  4.   

      刚刚测试了下,csdn下载也是点击时就插入数据了,不会管你下载成功与否(测试结果)。好像还没下载成功返回的函数吧,所有只能算点击次数,LZ你的问题如果要成功才添加次数,要就要io流读取完一个文件后+1就可以了
      

  5.   


    刚刚测试了下,csdn下载也是点击时就插入数据了,不会管你下载成功与否(测试结果)。好像还没下载成功返回的函数吧,所有只能算点击次数,确实csdn可能只算了一次(后台不清楚),而且我的积分也扣了,,有点坑吧LZ你的问题如果要成功才添加次数,要就要io流读取完一个文件后+1就可以了
      

  6.   


    刚刚测试了下,csdn下载也是点击时就插入数据了,不会管你下载成功与否(测试结果)。好像还没下载成功返回的函数吧,所有只能算点击次数,确实csdn可能只算了一次(后台不清楚),而且我的积分也扣了,,有点坑吧LZ你的问题如果要成功才添加次数,要就要io流读取完一个文件后+1就可以了问题不是加1问题,每次下载成功后次数加2,我就是在读取流结束后才计算的,原因在于,我的文件下载代码被执行了两次
      

  7.   

    那你再做个界面吧,当你第一次点击时链接到一个action,在此action使下载量增一,
    然后将文件数据 request到新做的界面 ,新页面设个submit 将数据提交至你的ExamFileAction
    在此action 就不要对数据库 进行操作了 
      

  8.   


    刚刚测试了下,csdn下载也是点击时就插入数据了,不会管你下载成功与否(测试结果)。好像还没下载成功返回的函数吧,所有只能算点击次数,确实csdn可能只算了一次(后台不清楚),而且我的积分也扣了,,有点坑吧LZ你的问题如果要成功才添加次数,要就要io流读取完一个文件后+1就可以了问题不是加1问题,每次下载成功后次数加2,我就是在读取流结束后才计算的,原因在于,我的文件下载代码被执行了两次debug一下 ,,是什么原因啊代码贴出来
      

  9.   

     ExamMaterial dlm= new ExamMaterial();
            System.out.println("downloadTimes begin!!!!!");
            dlm.downloadTimes(fileid);
    通过fileid找到对应文件使得下载次数加1,没有贴出来,问题不是这里,是下载次数每次都加二,原因是贴出的那段代码被执行了两次
      

  10.   

    你把+1的代码写在getDownload方法里不就OK了