php 下載附件並更新下載次數

來源:互聯網
上載者:User

這段代碼不知道是什麼原因,執行的時候實際下載次數不是 +1 而是 +2。

在這段代碼下面有一個改進的,下載次數只 +1。

<?phprequire_once('./login.php');downloadAttachment();// 下載附件function downloadAttachment() {global $conn;// 得到 id$id = $_REQUEST['file_id'];// 查詢資料庫$attachUrl = "";$attachSql = "SELECT ming,url, downloadnum FROM articleattach WHERE id='$id'";$result = $conn->Execute($attachSql);if ($result) {$attachUrl = $result->fields['url'];$attachMing = $result->fields['ming'];$downloadnum = $result->fields['downloadnum'] + 1;// 下載附件downloads($attachMing, $attachUrl, $downloadnum, $id);}}function downloads($name, $dir, $downloadnum, $id){global $conn;if (!file_exists($dir)) {// 沒有找到檔案header("Content-type: text/html; charset=utf-8");echo "File not found!";exit; } else {// 下載檔案$file = fopen($dir,"r"); Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($dir));Header("Content-Disposition: attachment; filename=".$name);echo fread($file, filesize($dir));fclose($file);// 更新資料庫//echo "UPDATE articleattach SET downloadnum='$downloadnum' WHERE id='$id'";$attachSql = "UPDATE articleattach SET downloadnum='$downloadnum' WHERE id='$id'";$conn->Execute($attachSql);}}?>

改進後的:

attachDownLoad.php

<?phprequire_once('./login.php');header("Content-type: text/html; charset=utf-8");downloadAttachment();// 下載附件function downloadAttachment() {global $conn;// 得到 id$id = $_REQUEST['file_id'];// 查詢資料庫$attachUrl = "";$attachSql = "SELECT ming,url, downloadnum FROM articleattach WHERE id='$id'";$result = $conn->Execute($attachSql);if ($result) {$attachUrl = $result->fields['url'];$attachMing = $result->fields['ming'];$downloadnum = $result->fields['downloadnum'] + 1;// 下載附件downloads($attachMing, $attachUrl, $downloadnum, $id);}}function downloads($name, $dir, $downloadnum, $id){global $conn;if (!file_exists($dir)) {// 沒有找到檔案echo "File not found!";exit; } else {// 更新資料庫$attachSql = "UPDATE articleattach SET downloadnum='$downloadnum' WHERE id='$id'";$conn->Execute($attachSql);// 跳到真正的下載頁面header("location:downloadfile.php?name=$name&dir=$dir");}}?>

downloadfile.php

<?phprequire_once('./login.php');$dir = $_REQUEST['dir'];$name = $_REQUEST['name'];// 下載檔案$file = fopen($dir,"r"); Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($dir));Header("Content-Disposition: attachment; filename=".$name);echo fread($file, filesize($dir));fclose($file);?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.