我面临一个非常奇怪的问题。我试图将图像上传到PHP脚本。构建编译没有错误,这是我所期望的,但是当会话实际完成时,它返回HTTP错误403.我知道403是"禁止",但我有不知道可能导致错误的原因。这是会议。
func uploadFile(fileData: NSData) {
var request: NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "https://www.codekaufman.com/file.php")!)
request.HTTPMethod = "POST"
let session = NSURLSession(configuration: .defaultSessionConfiguration())
let uploadTask = session.uploadTaskWithRequest(request, fromData: fileData, completionHandler:{
data, response, error in
if error != nil {
println(error)
return
}
println(response.description)
println()
var err: NSError?
var receivedData: [String: AnyObject]!
receivedData = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as? [String: AnyObject]
if(receivedData != nil) {
println(receivedData)
} else {
println("No data recieved.")
}
})
uploadTask.resume()
}
这是PHP脚本,没什么特别的。
<?php
error_reporting(E_ALL);
ini_set('display errors', 1);
if(isset($_FILES['file'])) {
echo json_encode(array('status' => 'true'));
} else {
echo json_encode(array('status' => 'false'));
}
?>
最后是回复。
<NSHTTPURLResponse: 0x7ff4f062bd10> { URL: https://www.codekaufman.com/file.php } { status code: 403, headers {
"Accept-Ranges" = bytes;
Connection = "Keep-Alive";
"Content-Length" = 1551;
"Content-Type" = "text/html";
Date = "Fri, 13 Feb 2015 08:05:55 GMT";
"Keep-Alive" = "timeout=10, max=200";
Server = Apache;
} }
我应该注意控制台显示&#34;没有收到数据。&#34;我已经在SO聊天室询问了NSChat&#39;我们已经试图修复它。虽然我们没有修复它,但我们发现它没有接收到auth挑战。
此外,我不知道该怎么做。任何帮助深表感谢。感谢。
答案 0 :(得分:0)
不幸的是,虽然我不能说为什么会这样,但我发现添加了这行
request.addValue("application/form-data", forHTTPHeaderField: "Content-Type")
解决了我的所有问题。服务器响应200,我按预期收到JSON响应。感谢那些试图提供帮助的人,虽然没有回答我的问题,但是你们给我的注意力带来了一些重点。