2015-02-06 85 views
0

我试图与SWIFT 我的本地PHP服务器上发送的图像,我不明白为什么我有一个错误消息(致命错误:意外发现零而展开的可选值)发送图像PHP迅速

这里是我的代码:

var image = info[UIImagePickerControllerOriginalImage] as UIImage 
var imageData = UIImageJPEGRepresentation(image, 90) 

var request = NSMutableURLRequest(URL: NSURL(string:"http://http:192.168.1.73:8888/upload.php")!) 
var session = NSURLSession.sharedSession() 

request.HTTPMethod = "POST" 

var boundary = NSString(format: "---------------------------14737809831466499882746641449") 
var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary) 

request.addValue(contentType, forHTTPHeaderField: "Content-Type") 

var body = NSMutableData.alloc() 


// Image 
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!) 
body.appendData(NSString(format:"Content-Disposition: form-data; name=\"htdocs\"; filename=\".jpg\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) 
body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) 
body.appendData(imageData) 
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!) 



request.HTTPBody = body 


var returnData = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) 
println(returnData) 
var returnString = NSString(data: returnData!, encoding: NSUTF8StringEncoding) 

println("returnString \(returnString)") 
+2

'的 “http:// HTTP:192.168.1.73:8888/upload.php的”'是无效的网址... – rintaro 2015-02-06 16:57:29

+0

没有时我用我的浏览器试用它说好。 – 2015-02-06 17:40:50

回答

0

你不能强迫一个Optional值的解缠,因为它可能是nil,而不是一个真正的价值。

走这条线,例如:

var request = NSMutableURLRequest(URL: NSURL(string:"http://http:192.168.1.73:8888/upload.php")!) 

如果NSURL(string:"http://http:192.168.1.73:8888/upload.php")回报nil,你会打电话NSMutableURLRequest(URL: nil)这是无效的。

您需要检查是否展开的值是有效的:

if let url = NSURL(string:"http://http:192.168.1.73:8888/upload.php") { 
    var request = NSMutableURLRequest(URL: url) 
} 
+0

对不起,但我有同样的错误。如果我把/ * var returnString = NSString(data:returnData !,编码:NSUTF8StringEncoding) println(“returnString \(returnString)”)* /我没有错误,但我不能保存在网址 – 2015-02-06 17:22:20

+0

@julienlescoulie同样,你正在解开'returnData!'而不问它是否为零。你在几个地方也一样。你需要解决所有这些问题。 – 2015-02-06 17:27:18

+0

我试过了,但我认为真正的问题是:为什么它返回零? – 2015-02-06 17:41:55