更新MYSQL,下载文件并重定向

时间:2013-05-12 15:17:50

标签: php mysql

我一整天都在调查这个问题并陷入困境。我有一个更新表的基本PHP脚本。将详细信息传递给它,然后从上传目录下载文件。

$user = isset($_GET['use'])? $_GET['use'] : null;
$route = isset($_GET['rou'])? $_GET['rou'] : null;
$expires = isset($_GET['exp'])? $_GET['exp'] : null;
$itemnu = isset($_GET['item'])? $_GET['item'] : null;
$host="host";   
$username="username";
$password="password"; 
$db_name="username";  
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("can not select DB"); 
$query = "INSERT INTO database.table(item,name,expiry) VALUES ('$itemnu', '$user',   '$expires')";  
mysql_query($query) or die('Query "' . $query . '" failed: ' . mysql_error());  
echo "<meta http-equiv=\"Refresh\" content=\"0; url=/upload/" . $route . "\">";

我现在需要做的是重定向回主页。但是你知道你用PHP下载后无法重定向,如果我重定向它之前它不起作用。我试过了

  

fopen和file_get_contents

但由于文件将是各种各样的微软,文本和PDF格式,我无法让它工作。我也尝试过(删除作为编辑的一部分 我看了一个JavaScript,无法工作如何使用PHP变量下载文件。有任何帮助,请提前感谢。 php脚本没有任何要求,它可以是任何有效的。 这是上传文件

<?php
$target = "../upload/";
$target = $target . str_replace(" ","_",( $_FILES['file']['name']));
$current = time();
$name=addslashes($_POST['title']);
$owner=$_POST['owner'];
$pic=str_replace(" ","_",($_FILES['file']['name']));
$time = strtotime($_POST['timestamp']);
$grade= implode(',&#32;', $_POST['g_group']);
$Loc= implode(',&#32;', $_POST['l_group']);
        mysql_connect("host", "database", "password") or die(mysql_error()) ;
        mysql_select_db("database") or die(mysql_error()) ;
        $query =("INSERT INTO UPLOAD (title,owner,faoGrade, foaLocation,date, expiry,route)
        VALUES
        ('$name', '$owner','$grade','$Loc','$current','$time', '$pic')");
        mysql_query($query);

        if(move_uploaded_file($_FILES['file']['tmp_name'], $target))
                            {
        echo  "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
                    } else {
        echo "Sorry, there was a problem uploading your file using " . query ;
                                    }
?>

并修改了下载

<?php  
$user = isset($_GET['use'])? $_GET['use'] : null;
$route = isset($_GET['rou'])? $_GET['rou'] : null;
$expires = isset($_GET['exp'])? $_GET['exp'] : null;
$itemnu = isset($_GET['item'])? $_GET['item'] : null;
$host="host";   
$username="username";
$password="password"; 
$db_name="database";  
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("can not select DB"); 
$query = "INSERT INTO database.READ(item,name,expiry) VALUES ('$itemnu', '$user',     '$expires')";  
mysql_query($query) or die('Query "' . $query . '" failed: ' . mysql_error()); 
sleep(20);                                                   //added didn't help
header('Content-type: application/octet-stream');                 
header('Content-Disposition: attachment; filename='.$route);                  
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");    
header("Content-Length: " . filesize($route));                 //added didn't work
readfile('/upload/'.$route);
header("refresh: 150; roster.php?action=Home"); 
exit; 
?>

3 个答案:

答案 0 :(得分:0)

它无法真正完成'服务器端'。

但是,由于浏览器通常会在下载过程中保持相同的“网页”打开,该页面可以在下载开始后重定向到您想要的任何位置。 (即使用Javascript)

所以它的页面包含您需要修改的下载脚本的链接,而不是实际的下载脚本本身。

答案 1 :(得分:0)

尝试将内容类型更改为application / pdf

我刚刚在PHP中完成了与此类似的工作,我不得不创建一个文件上传器,当用户将pdf文件上传到网页时,它将在该文件上运行shell exec命令来解密它并允许更多的权限,然后它会自动重新下载到用户计算机,我也知道你缺少一些代码来帮助这一点。此外,你的PHP方式,你总是要读取文件'upload.pdf'如果文件有不同的名称怎么办?

readfile($fileName . '.pdf');

最后,在退出之前的那一行;你有一个额外的分号

答案 2 :(得分:0)

尝试这样的事情,看看会发生什么

$query = "INSERT INTO database.table(item,name,expiry) VALUES ('$itemnu','$user','$expires')";  

if(mysql_query($query))
{
    header('Location:homepage.html');
}else{
   print_r($_GET); //check GET requests
   die; 
}