我有一个几乎没有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";
}
?>
任何人都可以指导我遵循以达到预期效果的方法。
感谢。
答案 0 :(得分: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();