在iOS上通过ASIFormDataRequest发送视频时出现部分上传错误

时间:2012-02-23 17:44:32

标签: php ios asiformdatarequest

我正在从我的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 个答案:

答案 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(),但有些人正在使用该函数获得复制错误。副本一般都有效。

太糟糕了,这是一个迟到的回复,希望它仍然可以服务