3

我有一个很少有 sql dbs 的 android 应用程序。我在我的应用程序中提供备份和恢复功能。因此,当用户选择备份时,将 sql db 文件发送到服务器,并在恢复时从服务器获取 sql db 文件并在设备中恢复。问题是我不确定是否有任何特定的方式可以将文件存储在服务器上,因为到目前为止,任何有链接的人都可以访问这些文件,我在服务器上使用了一个简单的 php 脚本:

<?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";
  }

?>

谁能指导我遵循的方法以达到预期的结果。

谢谢。

4

1 回答 1

1

好吧,您不必将上传的文件移动到任何公共目录中。当用户想要恢复他的备份时,他应该访问一个 php 文件,该文件获取他的备份文件并发送给他。

备份.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";
}

恢复.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();
于 2013-10-22T06:16:37.503 回答