Php $\u文件始终为空
我正在通过我的web服务将PDF上传到我的服务器,但是无论我做什么,$\u文件似乎总是空的 将上载PDF的程序是一个OSX程序(通过AFX网络)。我已经排除了这一可能性,因为当我试图通过“CoCooarestClient”(类似于chrome上的POSTMAN)上传文件时,我什么也得不到。在CocoaRestClient中,我将ContentType设置为“multipart/formdata” 我试图上传的PDF是478kb,所以我认为大小不是问题 下面是我的PHP代码。目前,我只是想看看$\u文件数组中是否有任何内容Php $\u文件始终为空,php,objective-c,pdf,afnetworking-2,uploading,Php,Objective C,Pdf,Afnetworking 2,Uploading,我正在通过我的web服务将PDF上传到我的服务器,但是无论我做什么,$\u文件似乎总是空的 将上载PDF的程序是一个OSX程序(通过AFX网络)。我已经排除了这一可能性,因为当我试图通过“CoCooarestClient”(类似于chrome上的POSTMAN)上传文件时,我什么也得不到。在CocoaRestClient中,我将ContentType设置为“multipart/formdata” 我试图上传的PDF是478kb,所以我认为大小不是问题 下面是我的PHP代码。目前,我只是想看看$\
<?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);
?>
这是我的objective-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];
}];
[经理职务:pdfURL
参数:零
构造体WithBlock:^(id formData){
[formData appendPartWithFileData:pdf名称:@“pdf”文件名:文件名mimeType:@“多部分/表单数据”];
}
成功:^(NSURLSessionDataTask*操作,id responseObject){
[错误响应的自检:响应对象];
[代表pdfUploadedSuccessfullyWithResponse:responseObject];
}
失败:^(NSURLSessionDataTask*操作,NSError*错误){
[委托pdfFailedToUploadWithError:错误];
}];
在使用POSTMAN确定我的php是否正常工作后,我可以断定是我的objective-C代码导致了该错误。然而,奇怪的是,尽管我的php代码返回空值,Charles却告诉我PDF正在上传 如果您忘记在表单元素中添加
enctype=“multipart/form data”
属性,这可能会对您有所帮助。试试下面的代码
<form action="demo.php" method="post" enctype="multipart/form-data"> ... </form>
。。。
希望这有帮助。找到了解决方案!
问题是我没有将请求序列化器HTTP头字段设置为“application/pdf”
[manager.requestSerializer setValue:@"application/pdf" forHTTPHeaderField:@"Content-Type"];
没有HTML代码,它是通过OSX程序完成的。然而,我正在通过CocoaRestClient进行调试。您可以发布适用的objective-c代码和
$\u文件的var\u dump
。发布任何代码,因为我们必须查看它实际发送的内容。程序可能不会将其作为$\u文件[“PDF”]
上传,而是作为$\u文件[“userfile”]
或其他所有文件一起上传,请尝试打印($\u文件)
并查看其是否为空。如果是空数组,则不会收到任何内容。是否确实没有抛出错误或异常?你可以试着用一个像:Hey Ejaz这样的应用程序来查看到底发送了什么。我没有使用HTML表单发送数据,因此很遗憾,这没有帮助。不过还是要谢谢你!
[manager.requestSerializer setValue:@"application/pdf" forHTTPHeaderField:@"Content-Type"];