2016-07-22 7 views
0

私はカメラから画像を取り込み、画像をベース64形式に変換しています。イメージをサーバーに送信するまでに時間がかかります。インターネットに接続していない場合は、ローカルDBに保存しています。一度インターネットに接続すると、複数の画像をサーバーに送信します。アプリからサーバに画像を送る最善の方法は何ですか?iOSアプリからサーバーに画像を送信する適切な方法

+0

base64で画像を送信することはお勧めできません。アップロードするには多くの時間がかかります。アップロードにはマルチパートを使用してください。このリンクをクリックしてください。http://stackoverflow.com/questions/29623187/upload-image-with-multipart-form-data-ios-in-swift – Madhu

+0

マルチパート形式を使用して画像を送信できます。 –

答えて

-1

あなたは次のようにマルチパートの要求を行い、その後、あなたが今までにAlamofireを試してみました、あなたのNSURLSession

NSString *boundary = [NSString stringWithFormat:@"Boundary-%@", [[NSUUID UUID] UUIDString]]; 

     // configure the request 
    NSString *urlString = YOUR_URL; 
    NSURL *url =[NSURL URLWithString:urlString]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    // set content type 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
    [request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    //create body 
    request.HTTPBody = [self createBodyWithParameters:params paths:@[filePath] fieldName:fieldName boundary:boundary]; //params(NSDictionary) WILL BE YOUR PARAMETERS TO WEB SERVICE 

    [request setValue:[NSString stringWithFormat:@"%lu",(long)[request.HTTPBody length]] forHTTPHeaderField:@"Content-Lenght"]; 
+0

この質問は「迅速」とタグ付けされています。あなたのソリューションは価値があるかもしれませんが、OPによって要求された言語で書かれていないので、話題にはなりません。 Swiftで回答を提供してください。ありがとうございました。 – Moritz

1

でその要求を使用することができますか?それはファイルのアップロードをサポートします。

public func requestImage(url: String) -> SignalProducer<UIImage, NetworkError> { 
     return SignalProducer { observer, disposable in 
      let serializer = Alamofire.Request.dataResponseSerializer() 
      Alamofire.request(.GET, url) 
       .response(queue: self.queue, responseSerializer: serializer) { 
        response in 
        switch response.result { 
        case .Success(let data): 
         guard let image = UIImage(data: data) else { 
          observer.sendFailed(.IncorrectDataReturned) 
          return 
         } 
         observer.sendNext(image) 
         observer.sendCompleted() 
        case .Failure(let error): 
         observer.sendFailed(NetworkError(error: error)) 
        } 
      } 
     } 
    } 

そしてasync image loadのための一例のこの1:ここでは

は、画像のロードのための一例です。

関連する問題