Bild hochladen mit alamofire

Ich versuche, ein Bild hochladen, um server mit Alamofire aber mein code funktioniert nicht. Das ist mein code:

var parameters = ["image": "1.jpg"]
    let image = UIImage(named: "1.jpg")
    let imageData = UIImagePNGRepresentation(image)
    let urlRequest = urlRequestWithComponents("http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/", parameters: parameters, imageData: imageData)
    Alamofire.upload(urlRequest.0, data: urlRequest.1)
        .progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
            println("\(totalBytesWritten) /\(totalBytesExpectedToWrite)")
        }
        .responseJSON { (request, response, JSON, error) in
            println("REQUEST \(request)")
            println("RESPONSE \(response)")
            println("JSON \(JSON)")
            println("ERROR \(error)")
    }

und das ist urlRequestWithComponents methos:

func urlRequestWithComponents(urlString:String, parameters:Dictionary<String, String>, imageData:NSData) -> (URLRequestConvertible, NSData) {

    //create url request to send
    var mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: urlString)!)
    mutableURLRequest.HTTPMethod = Alamofire.Method.POST.rawValue
    let boundaryConstant = "myRandomBoundary12345";
    let contentType = "multipart/form-data;boundary="+boundaryConstant
    mutableURLRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")



    //create upload data to send
    let uploadData = NSMutableData()

    //add image
    uploadData.appendData("\r\n--\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    uploadData.appendData("Content-Disposition: form-data; name=\"file\"; filename=\"file.png\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    uploadData.appendData("Content-Type: image/png\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    uploadData.appendData(imageData)

    //add parameters
    for (key, value) in parameters {
        uploadData.appendData("\r\n--\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
        uploadData.appendData("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n\(value)".dataUsingEncoding(NSUTF8StringEncoding)!)
    }
    uploadData.appendData("\r\n--\(boundaryConstant)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)



    //return URLRequestConvertible and NSData
    return (Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: nil).0, uploadData)
}

und das ist, was ich in der Konsole:

ANFRAGE { URL: http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/ }
ANTWORT Optional( { URL: http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/ } { status-code: 200, - Header {
"Accept-Ranges" = bytes;
Connection = close;
"Content-Length" = 345;
"Content-Type" = "text/html";
Date = "Tue, 25 Aug 2015 10:52:01 GMT";
"Last-Modified" = "Mon, 24 Aug 2015 03:54:55 GMT";
Server = Apache;
} })
JSON nil
FEHLER Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Der Vorgang konnte nicht abgeschlossen werden. (Kakao Fehler 3840.)" (Ungültiger Wert Zeichen 0.) UserInfo=0x7f8c68c1c130 {NSDebugDescription=Ungültiger Wert Zeichen 0.})

meine PHP-Inhalt:

JS:

<? php
echo $_FILES['image']['name'].
'<br/>';


//ini_set('upload_max_filesize', '10M');
//ini_set('post_max_size', '10M');
//ini_set('max_input_time', 300);
//ini_set('max_execution_time', 300);


$target_path = "uploads/";

$target_path = $target_path.basename($_FILES['image']['name']);

try {
  //throw exception if can't move the file
  if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {
    throw new Exception('Could not move file');
  }

  echo "The file ".basename($_FILES['image']['name']).
  " has been uploaded";
} catch (Exception $e) {
  die('File did not upload: '.$e - > getMessage());
} ?>

Mein code folgten diesem Vorschlag: Beim hochladen der Datei mit Parameter über Alamofire
.Bitte helfen Sie mir, danke

  • Hast du die Lösung gefunden ?
  • ich denke, es ist eine bewährte Methode zum hinzufügen von Validierung in der von responseJSON .validate().responseJSON
  • Finden Sie die Lösung per Alamofire 3+ mit multi-Parameter und Standard-Header. stackoverflow.com/a/34961720/2125010
InformationsquelleAutor user3087360 | 2015-08-25
Schreibe einen Kommentar