안녕하세요, 여기에 링크를 통해 서버에 이미지를 업로드하는 데 사용하는 코드가 있습니다.
if (currentElementName == "uploadUrl") {
let returnUploadURL = string
var imageData = UIImagePNGRepresentation(pictureImage.image)
if imageData != nil{
var request = NSMutableURLRequest(URL: NSURL(string: returnUploadURL)!)
var session = NSURLSession.sharedSession()
println(request)
request.HTTPMethod = "POST"
var boundary = NSString(format: "---------------------------14737809831466499882746641449")
var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
// println("Content Type \(contentType)")
request.addValue(contentType, forHTTPHeaderField: "Content-Type")
var body = NSMutableData.alloc()
// Title
body.appendData(NSString(format: "\r\n--%@\r\n",boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format:"Content-Disposition: form-data; name=\"image.png\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!)
// Image
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format:"Content-Disposition: form-data; name=\"file\"; filename=\"image.png\"\\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)
var returnString = NSString(data: returnData!, encoding: NSUTF8StringEncoding)
println("returnString \(returnString)")
}
}
어떤 이유로 콘솔에서 이것을 얻고 앱이 충돌합니다.
<NSMutableURLRequest: 0x17020d560> { URL: http://oms/process.php?method=PQUEUE_INV_FILE }
returnString Optional(Array
(
[file] => Array
(
[name] => r
[type] => application/octet-stream
[tmp_name] => /tmp/phpbAfzYN
[error] => 0
[size] => 17263726
)
)
)
<NSMutableURLRequest: 0x174018130> { URL: & }
fatal error: unexpectedly found nil while unwrapping an Optional value
먼저 파일 이름 "r"을 어떻게 제공합니까? 그리고 링크의 "&"다음에이 치명적인 오류가 발생하는 이유는 무엇입니까? 링크는 이런 방식으로 작동합니다.
"http://oms/process.php?method=PQUEUE_INV_FILE&id=22405"
몇 가지 관찰 :
당신에 content-disposition
이미지 이름, 당신은 \\r
당신은 분명 의미 곳 \r
.
귀하의 요청은 제대로 종료되지 않았습니다. --
마지막 경계 뒤에는 있어야 하지만 그 앞에 있어야합니다 \r\n
(예 : 마지막 경계의 형식 문자열은이어야합니다 \r\n--%@--\r\n
).
실패한 요청과 관련하여 두 번째로 호출되는 것처럼 보이지만 두 번째 returnUploadURL
는 올바르지 않습니다 (단순히으로 &
표시됨). URL을 어떻게 만들 었는지 보여주지 않았지만 문제가있는 것 같습니다. 해당 URL을 작성하는 코드를 확인하십시오.
println
요청 작성을 시작하기 전에 URL 중 하나를 수행하면 해당 문제가 완전히 완화됩니다. URL은 다음과 같아야합니다.
http://oms/process.php?method=PQUEUE_INV_FILE&id=22405
그러나 어쨌든 두 개의 개별 요청이 작성되는 것으로 보입니다. 첫 번째 요청이 &
. 두 번째는 &
그 자체 인 것 같습니다 . 요컨대, URL을 작성하는 코드를 공유하지 않았지만 거기에 문제가 있다고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다