我正在通过我的网络服务上传一个PDF到我的服务器,但是不管我做什么,$_FILES似乎总是空的。
该程序将上传PDF是一个OSX程序(通过AFNetworking)。我排除了这个问题的可能性,因为当我试图通过'CocoaRestClient‘上传文件(类似于铬上的邮递员)时,我什么也得不到。在CocoaRestClient中,我将ContentType设置为“多部分/表单-数据”。
我试图上传的PDF是478 do,所以我不认为大小是问题。
我的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正确工作之后,我可以得出结论,我的目标-C代码是导致错误的原因。然而,奇怪的是,即使我的php代码返回null,Charles告诉我PDF正在上传!
发布于 2014-05-17 08:55:25
找到解决办法了!问题是,我没有将请求序列化程序HTTP头字段设置为“application/pdf”。
[manager.requestSerializer setValue:@"application/pdf" forHTTPHeaderField:@"Content-Type"];
发布于 2014-05-17 07:40:06
如果忘记在form元素中添加enctype="multipart/form-data"
属性,这可能会对您有所帮助。试试下面的代码。
<form action="demo.php" method="post" enctype="multipart/form-data"> ... </form>
希望这能有所帮助。
https://stackoverflow.com/questions/23713133
复制