$ _FILES始终为空

时间:2014-05-17 15:33:52

标签: php objective-c pdf afnetworking-2 uploading

我正在通过我的网络服务将PDF上传到我的服务器,但无论我做什么,$ _FILES似乎总是空着。

将上传PDF的程序是OSX程序(通过AFNetworking)。当我尝试通过'CocoaRestClient'(类似于chrome上的POSTMAN)上传文件时,我已经将此排除为导致问题的可能性,我什么都没得到。在CocoaRestClient中,我将ContentType设置为'multipart / form-data'。

我试图上传的PDF是478kb,所以我不认为这个大小是个问题。

我的PHP代码如下。目前我只想查看$ _FILES数组中是否有任何内容。

<?php

header('Content-type: multipart/form-data');

$fileName = $_FILES['PDF']['name'];
$tmpName  = $_FILES['PDF']['tmp_name'];
$fileSize = $_FILES['PDF']['size'];
$fileType = $_FILES['PDF']['type'];

$response = array("filename" => $fileName,
                  "tmpName" => $tmpName,
                  "fileSize" => $fileSize,
                  "filetype" => $fileType,
                  "FILES" => $_FILES);

echo json_encode($response);

?>

这是我从JSON获得的回复

{"filename":null,
 "tmpName":null,
 "fileSize":null,
 "filetype":null,
 "FILES":[]}

这是我的目标-C代码。

                [manager POST:pdfURL
                   parameters:nil
    constructingBodyWithBlock:^(id <AFMultipartFormData> formData) {
        [formData appendPartWithFileData:pdf name:@"PDF" fileName:filename mimeType:@"multipart/form-data"];
    }

                      success:^(NSURLSessionDataTask *operation, id responseObject) {
                        [self checkForErrorInResponse:responseObject];

                        [delegate pdfUploadedSuccessfullyWithResponse:responseObject];
                    }

                      failure:^(NSURLSessionDataTask *operation, NSError *error) {
                          [delegate pdfFailedToUploadWithError:error];
                      }];

使用POSTMAN确定我的php工作正常后,我可以得出结论,我的Objective-C代码导致了这个bug。但奇怪的是,即使我的php代码返回null,Charles也告诉我PDF正在上传!

2 个答案:

答案 0 :(得分:0)

找到解决方案! 问题是我没有将请求序列化程序HTTP头字段设置为'application / pdf'。

[manager.requestSerializer setValue:@"application/pdf" forHTTPHeaderField:@"Content-Type"];

答案 1 :(得分:-1)

如果您忘记在表单元素中添加enctype="multipart/form-data"属性,这可能对您有所帮助。请尝试以下代码。

<form action="demo.php" method="post" enctype="multipart/form-data"> ... </form>

希望这有帮助。

相关问题