如何使用Swift将图像发送到php文件

时间:2014-08-23 21:55:04

标签: php image post upload swift

对于我的应用程序,我需要将图像发送到php文件。 我已经知道如何使用它发送字符串:

var bodyData = "info=test"

let URL: NSURL = NSURL(string: "LINK TO A PHP FILE")
let request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
    (response, data, error) in
    println(NSString(data: data, encoding: NSUTF8StringEncoding))
}

在我的php文件中:

$info = $_POST['info'];

echo $info;

但我不知道如何发送图片

2 个答案:

答案 0 :(得分:4)

var imageData :NSData = UIImageJPEGRepresentation(imagenReduced, 1.0);       
var request: NSMutableURLRequest?
let HTTPMethod: String = "POST"
var timeoutInterval: NSTimeInterval = 60
var HTTPShouldHandleCookies: Bool = false

request = NSMutableURLRequest(URL: url)
request!.HTTPMethod = HTTPMethod
request!.timeoutInterval = timeoutInterval
request!.HTTPShouldHandleCookies = HTTPShouldHandleCookies


let boundary = "----------SwIfTeRhTtPrEqUeStBoUnDaRy"
let contentType = "multipart/form-data; boundary=\(boundary)"
request!.setValue(contentType, forHTTPHeaderField:"Content-Type")
var body = NSMutableData();


 let tempData = NSMutableData()
 let fileName = filenames + ".jpg" //"prueba.jpg"
 let parameterName = "userfile"


let mimeType = "application/octet-stream"

tempData.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
let fileNameContentDisposition = fileName != nil ? "filename=\"\(fileName)\"" : ""
let contentDisposition = "Content-Disposition: form-data; name=\"\(parameterName)\"; \(fileNameContentDisposition)\r\n"
tempData.appendData(contentDisposition.dataUsingEncoding(NSUTF8StringEncoding)!)
tempData.appendData("Content-Type: \(mimeType)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
tempData.appendData(imageData)
tempData.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)

body.appendData(tempData)

body.appendData("\r\n--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)

request!.setValue("\(body.length)", forHTTPHeaderField: "Content-Length")
request!.HTTPBody = body



var vl_error :NSErrorPointer = nil
var responseData  = NSURLConnection.sendSynchronousRequest(request,returningResponse: nil, error:vl_error)

var results = NSString(data:responseData, encoding:NSUTF8StringEncoding)
println("finish \(results)")

答案 1 :(得分:0)

//check this code 
func callToProfileUpdate()
        {

            let loadingNotification = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
            loadingNotification.mode = MBProgressHUDMode.Indeterminate
            loadingNotification.labelText = "Loading"


            var userID: AnyObject! = NSUserDefaults.standardUserDefaults().valueForKey("USER_ID")

            var urlString = NSString(string:"\(baseurl)action=update_profile&user_id=\(userID)&user_name=\(userName.text)&account_type=\(self.selectedAccountTypeLabel.text!)&show_comments=\(commentStauts)&tag_permission=\(tagPermission)")

            urlString = urlString .stringByReplacingOccurrencesOfString(" ", withString: "%20")

            var url = NSURL(string:urlString as String)

            let urlRequest = NSMutableURLRequest(URL: url!)

            if mediaData != nil
            {

                urlRequest.HTTPMethod = "POST"

                var boundary = NSString(format: "---------------------------14737809831466499882746641449")
                var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
                urlRequest.addValue(contentType as String, 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=\"photo\"; filename=\".png\"\\.png\n").dataUsingEncoding(NSUTF8StringEncoding)!)

                body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
                body.appendData(mediaData)
                body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)

                urlRequest.HTTPBody = body

            }