2012-05-07 15 views
2

私はディレクトリからファイルをダウンロードするダウンロードスクリプトを書いています。 ダウンロードに成功すると、データベースを更新する必要がありますので、次のコードを記述してください。ダウンロードに成功したらデータベースを更新するには?

$path = $_SERVER['DOCUMENT_ROOT']."/upload/"; // change the path to fit your websites document structure 

$fullPath = $path.$_GET['download_file']; 

if ($fd = fopen ($fullPath, "r")) { 
    $fsize = filesize($fullPath); 
    $path_parts = pathinfo($fullPath); 
    $ext = strtolower($path_parts["extension"]); 
    switch ($ext) { 
     case "pdf": 
     header("Content-type: application/pdf"); // add here more headers for diff. extensions 
     header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download 
     break; 
     default; 
     header("Content-type: application/octet-stream"); 
     header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); 
    } 
    header("Content-length: $fsize"); 
    header("Cache-control: private"); //use this to open files directly 
    while(!feof($fd)) { 
     $buffer = fread($fd, 2048); 
     echo $buffer; 
    } 
} 
fclose ($fd); 
$update = mysql_query("Update query"); 
if($update) { 
echo "updated"; 
} 
else { 
echo 'error'.mysql_error(); 
} 
exit; 

しかし、私は、ダウンロードリンクをクリックすると、ブラウザのポップアップは、私がキャンセルボタンをクリックすると、それはファイルとして更新クエリを実行してはならない、ポップアップで表示され、ダウンロードが、時に使用していません上記のコードでは、キャンセルボタンをクリックしても、更新クエリが実行されます。

私のコードで間違いは何ですか?

+0

私に私の問題の解決策を伝えることができるいずれか? – Ahmad

答えて

3

ユーザーがリクエストを中断したかどうかを確認する必要があります。そうでない場合は、その行だけを挿入してください。

if (connection_status() == CONNECTION_NORMAL) { 
    // do query here 
} 

参照:

+0

私のコードにあなたのコードを配置する場所はどこですか? – Ahmad

+0

@Ahmad更新クエリ – Petah

+0

私の更新クエリを 'if(connection_status()!= CONNECTION_NORMAL){}'に入れましたが、ファイルが正常にダウンロードされた場合、更新クエリは実行されません。 – Ahmad

関連する問題