【问题标题】:Partial Upload Error when sending video through ASIFormDataRequest on iOS在 iOS 上通过 ASIFormDataRequest 发送视频时出现部分上传错误
【发布时间】:2012-05-04 17:54:25
【问题描述】:

我正在从我的 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。

对可能发生的事情有任何想法吗?或者更好的是,确保我们获得完整文件的解决方案?

【问题讨论】:

    标签: php ios asiformdatarequest


    【解决方案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() 但有些人在使用该函数时遇到了复制错误。复制通常有效。

    很遗憾,这么晚才回复,希望它仍然可以提供服务

    【讨论】:

    • 我发现真正的问题是通过 Internet 连接丢失了部分文件。我写了一种以小块上传文件的方法,如果一个块丢失,重新提交该块。对于每个块,我将其附加到我在服务器上创建的文件中。
    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 2013-07-02
    • 2019-12-25
    • 2016-08-04
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    相关资源
    最近更新 更多