2013-10-04 36 views
3

我有一個與幾個sql dbs的android應用程序。我在我的應用程序中提供備份和恢復功能。所以當用戶選擇備份時,sql db文件被髮送到服務器,並且在恢復時,sql db文件將從服務器獲取並在設備中恢復。事情是我不知道是否有任何特殊的方式,我應該將文件存儲在服務器上,因爲到目前爲止,任何有鏈接的人都可以訪問這些文件,我在服務器上使用了一個簡單的php腳本:如何安全地在服務器上存儲sql dbs

<?php 

    $file_path = "uploads/"; 

    $file_path = $file_path . basename($_FILES['uploaded_file']['name']); 
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 
    echo "success"; 
    } else{ 
    echo "fail"; 
    } 

?> 

任何人都可以請指導我遵循的方法來實現預期的結果。

謝謝。

回答

1

那麼,你不必將上傳的文件移動到任何公共目錄。當用戶想要恢復備份時,他應該訪問一個獲取備份文件併發送給他的php文件。

backup.php

$file_path = "../uploads/"; 

$file_path = $file_path . basename($_FILES['uploaded_file']['name']); 
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 
    echo "success"; 
} else{ 
    echo "fail"; 
} 

restore.php

$filePath = "../uploads/some_uploaded_db.sqlite"; 
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($filePath)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($filePath)); 
ob_clean(); 
flush(); 
readfile($filePath); 
exit(); 
相關問題