3

SQL データベースがほとんどない 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 に答える