0

我整天都在研究这个并卡住了。我有一个更新表格的基本 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变量下载文件。任何帮助appricated,在此先感谢。不需要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; 
?>
4

3 回答 3

0

它不能真正做到“服务器端”。

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

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

于 2013-05-12T15:28:39.617 回答
0

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

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

readfile($fileName . '.pdf');

最后,在出口前的线路上;你有一个额外的分号

于 2013-05-12T15:33:53.420 回答
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; 
}
于 2013-05-12T15:35:23.573 回答