2013-05-12 2 views
0

나는 하루 종일 이것을보고 고집했습니다. 테이블을 업데이트하는 기본 PHP 스크립트가 있습니다. 세부 정보를 전달한 다음 업로드 디렉토리에서 파일을 다운로드합니다.MYSQL을 업데이트하고 파일을 다운로드하고 리디렉션

$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의 한 varity 수있는 바와 같이, 나는 그것을 작동시킬 수 없습니다. 나 또한 시도 (편집의 일부로 제거) 자바 스크립트를 보았고 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; 
?> 

답변

0

은 정말 '서버 측을'할 수 없습니다 수정.

그러나 브라우저는 일반적으로 유지로 동일한 '웹 페이지'가 열려있는 동안 그는 다운로드가 원하는 위치로 리디렉션을 시작한 후 진행할 수 있습니다. (예 : 자바 스크립트 사용)

그래서 실제 다운로드 스크립트 자체가 아닌 다운로드 스크립트에 대한 링크가 포함 된 페이지입니다.

0

난 그냥 작업 PHP에서이 비슷한 생성을 완료

, 나는 사용자가 웹 페이지에 PDF 파일을 업로드 파일 업 로더를 작성했다 응용 프로그램/PDF로 콘텐츠 형식을 변경해보십시오 그것은 그 파일에 대한 쉘 exec 명령을 실행하여 해독하고 더 많은 권한을 허용 한 다음 사용자 컴퓨터에 자동으로 다시 다운로드됩니다. 또한이 작업을 돕기위한 코드가 누락되었습니다. 또한, PHP를 사용하는 방법으로 파일 이름이 다른 경우 'upload.pdf'파일을 항상 읽어야합니다.

readfile($fileName . '.pdf'); 

그리고 마지막으로 종료 직전의 라인에서; 당신은 추가 세미콜론이 같은

+0

죄송 무슨 일이 일어 나는지. 그것은 upload.pdf 대신에 $ 경로를 가지고있었습니다. 세미 콜론 ??? 제거되었습니다. 아직 다운로드 한 파일이 변환기로 열리지 않습니다 ??? – user1980618

+0

나는 그것이 처리를 끝내기 위해 파일을 기다리지 않고 있기 때문에 그것이 무엇인지 알 수있다. 즉, 파일을 바로 다운로드하고 내용의 일부 또는 파일 뒤에있는 물건이 누락되어있다. 그것이 해야하는 것보다 낮은 파일 크기, 그것에 잠을 넣어보십시오 ... 그래서 업로드 후 10 초 동안로드 스크립트와 함께 계속 –

+0

다니엘, 스폿에, 그냥 테스트를 완료하고 파일이 2 킬로바이트, 서버의 크기는 36kb입니다. 적어도 왜 수정을 찾아야하는지 알 수 있습니다. – user1980618

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; 
} 
관련 문제