2015-02-06 80 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