我正在通过我的网络服务将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正在上传!
答案 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>
希望这有帮助。