2012-06-16 3 views
1

파일 업로드를 관리하기 위해 내 사이트에 Uploadify jQuery 플러그인을 설정했습니다. 이 업로드 스크립트가 뱉어 무엇이든 나를 보여주기위한 것입니다빈 데이터를 반환하는 업로드 스크립트

'onUploadSuccess' : function(file, data, response) { 
    console.log("Upload complete for file " + file.name + ". Script returned: " + data); 
} 

다음 onUploadSuccess 이벤트 내에서,이 코드가 있습니다. 이제 대개 응답은 다음과 같습니다.

test.jpg 파일 업로드 완료. : 스크립트 반환 { "상태": 1, "파일": { "ID": "v8rwlxj3", "이름": "test.jpg를"}}

업로드 스크립트 파일을 처음 받고있다, 다음과 같이 컬을 사용하여 Rapidshare에 업로드 :이 업로드 때

// Move uploaded file 
move_uploaded_file($_FILES['Filedata']['tmp_name'], $targetDir . '/' . $id); 

// Get the RapidShare server to upload to 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=nextuploadserver'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
if(!$uploadServer = trim(curl_exec($ch))) { 
    error('nextuploadserver failed'); 
} 
if(strstr($uploadServer, 'ERROR:')) { 
    error('nextuploadserver failed'); 
} 

// Upload the file to RapidShare 
$uploadID = mt_rand(1000000000, 9999999999); 
$url = 'http://rs' . $uploadServer . '.rapidshare.com/cgi-bin/rsapi.cgi?uploadid=' . $uploadID; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, 1); 
$postFields = array('sub' => 'upload', 
        'login' => 'login', 
        'password' => 'password', 
        'uploadid' => $uploadID, 
        'filename' => $_FILES['Filedata']['name'], 
        'filecontent' => '@' . $targetDir . '/' . $id); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); 
if(!$resp = curl_exec($ch)) { 
    error('upload call failed'); 
} 

는 업로드 스크립트는 그래서 같은 JSON 응답을 뱉어 :

// Output 
echo json_encode(array('status' => 1, 'file' => array('id' => $id, 'name' => $uploadDetails[1]))); 

이 작은 파일에 대해 잘 작동합니다. 그러나 30MB 테스트 파일을 업로드하면 다음과 같은 응답이 표시됩니다.

30mb.txt 파일 업로드 완료. 처음에는 PHP가 최대 실행 시간을 치는 줄 알았는데에서

,하지만 난 내 스크립트의 상단이 있습니다 : 스크립트가 반환

set_time_limit(21600); // 6 hours 

게다가, 나는 PHP 오류가있는 볼 것 반환되었습니다. 그러나 그것은 단지 무엇이든을 반환하지 않습니다. 무엇이 이것을 일으킬 수 있습니까? 감사.

+0

PHP가 제한 시간을 초과하지 않을 수 있지만 응답을 기다리는 동안 ajax가 연결 시간 초과에 도달했을 수 있습니다. –

+0

아, 그럴 수도 있습니다. Uploadify는 30 초 후에 스크립트에서 응답을받지 못하면 업로드가 성공했다고 가정합니다. 성공 타임 아웃을 높게 설정하고 작동하는지 확인합니다. 감사. –

+0

그래, 그게 다야. 고마워요! :) –

답변

0

upload_max_filesize이 (가) 30M 이상으로 설정되어 있습니까? 그 하나는 과거에 두통을 일으켰습니다.

+0

그래, 대용량 파일은 여전히 ​​Rapidshare에 업로드되고 내 로컬 디렉토리에 저장되므로 업로드가 작동하고 있다는 사실을 알고 있습니다. 스크립트가 중간에 돌아오고있는 것 같습니다 (스크립트가 "반환 된"후에도 Rapidshare로 업로드가 계속 실행 중입니다). –

0

PHP는 제한 시간을 맞추지 않을 수 있지만 응답을 기다리는 동안 ajax가 연결 시간 초과에 도달 할 수 있습니다.

0

uploadid post 매개 변수를 제거하십시오. 이력서 업로드로 Uploadid 매개 변수.