Ошибка частичной загрузки при отправке видео через ASIFormDataRequest на iOS - PullRequest
1 голос
/ 23 февраля 2012

Я отправляю видео из своего приложения iOS на свой сервер и получаю код ошибки PHP 3 - «Загруженный файл был загружен только частично». Тем не менее, это происходит только несколько раз, и я еще не нашел образец с ним. Я использую 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'] ['error'], равна 3, и PHP сообщает, что это частично загруженный файл, а $ _FILES ['Filedata'] ['size'] равно 0.

Есть мысли о том, что может происходить? Или, еще лучше, решение, которое гарантирует, что мы получим полный файл?

1 Ответ

1 голос
/ 04 мая 2012

Я не уверен, но я точно знаю, что когда сценарий завершает работу, загруженный файл исчезает, поэтому вам нужно скопировать его в другое место на вашем сервере.

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 (), но некоторые получают ошибки копирования с этой функцией.Копия, как правило, работает.

Очень плохо, это такой запоздалый ответ, надеюсь, он все еще может быть полезным

...