2012-02-23 53 views
1

我正在將我的iOS應用中的視頻提交給我的服務器,並收到一個PHP錯誤代碼3 - '上傳的文件僅部分上傳。但是,這只是發生了一些時間,我還沒有找到它的模式。我使用ASIFormDataRequest發送文件。通過iOS上的ASIFormDataRequest發送視頻時發生部分上傳錯誤

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:urlUpload]; 
request.shouldContinueWhenAppEntersBackground = YES; 
[request setFile:@"filename" 
     withExtension:@".mov"] 
     withFileName:@"filename.mov" 
     andContentType:@"video/quicktime" 
     forKey:@"Filedata"]; 
request setDelegate:self; 
[request setUploadProgressDelegate:self; 
[request setShowAccurateProgress:YES]; 
[request startAsynchronous]; 

在此過程中定義了urlUpload。

我的PHP腳本的樣子:

if (isset($_FILES['Filedata'])) { 
    if ($_FILES['Filedata']['error']) { 
     echo "File Error"; 
    } else { 
     //Handle the upload file 
    } 
} else { 
    echo "No File"; 
} 

用$ _FILES [ 'Filedata上'] [ '錯誤']關聯的錯誤是3,PHP規定是部分上傳的文件,和$ _FILES [」 Filedata'] ['size']爲0.

對於可能發生的事情有任何想法?或者更好的是,一個確保我們獲得完整文件的解決方案?

回答

1

我不確定,但我知道的是,當腳本完成後,上傳的文件就不存在了,因此您必須將其複製到服務器上的其他位置。

if (file_exists("upload/" . $_FILES["file"]["name"])) 
    { 
    echo $_FILES["file"]["name"] . " already exists. "; 
    } 
else 
    { 
    copy($_FILES["file"]["tmp_name"], 
    "upload/" . $_FILES["file"]["name"]); 
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 

一些喜歡使用move_uploaded_file()以但也有一些得到複製錯誤與該功能。複製一般工作。

太糟糕了,這是這麼晚的答覆,希望它仍然是服務

+1

的我發現真正的問題是失去的文件在互聯網上連接的一部分。我寫了一種上傳文件的方法,如果塊丟失,請重新提交該塊。對於每個塊,我將它附加到我在服務器上創建的文件中。 – adamame 2012-05-04 17:39:40