使用AFNetWorkingは、ファイル/画像をアップロード

プロジェクトの前にA.は倹約使用されています。さて、HTTP、HTTPSを使用しない理由を、彼らは暗号化されていることを背景に背景を置き換えます。

 

この方法は、AFHTTPSessionManagerに使用されています

- (NSURLSessionDataTask *)POST:(NSStringの* )URLString 
                    パラメータ:( ID )パラメータ
     constructingBodyWithBlock :( (^)(ID <AFMultipartFormData> FORMDATA))ブロック
                      進行:(NULL可能で、ボイド(^)(NSProgress * _Nonnull))uploadprogressの
                       成功:( (^)(NSURLSessionDataTask *タスク、ID responseObject))の成功
                       失敗:( 無効(^)(NSURLSessionDataTask *タスク、NSError *エラー))の故障。

 

パラメータへのパラメータとしてのTokenId

次に、ファイルのフィールドに注意を払う:このファイルはあります

 

[FORMDATA appendPartWithFileData:ファイル[@ "バフ"]名前:@ "ファイル"ファイル名:ファイル[@ "名前"] MIMEタイプ:@ "イメージ/ *" ];

名前の値。私が知って取得していない前に。

 

FILE_UPLOAD_URLパラメータ:[[WLFNetWorkManager]はPOSTを共有@ { @ " のTokenId ":のTokenId} constructingBodyWithBlock:^(ID <AFMultipartFormData>   _Nonnull FORMDATA){ 
        
        [FORMDATA appendPartWithFileData:ファイル[ @" バフ" ]名:@" ファイル"ファイル名: [ファイル"@ " MIMEタイプ]:@" イメージ/ * " ]; 
        
        
    }進行: ^(NSProgress * _Nonnull uploadprogressの){ 
        
        // のNSLog(uploadprogressの、 "uploadprogressの=%@" @)。
    }成功:^(NSURLSessionDataTask * _Nonnullタスク、  _Nullable responseObject){ 
        
        NSStringの * JSON = [[NSStringのALLOC] initWithData:responseObjectエンコーディング:NSUTF8StringEncoding]。
        NSDictionaryの * retDict = [[WLFDataTransformTool shareInstance] dictionaryWithJsonString:JSON]; 
        完全な(retDict)。
        / * 
         { 
             コード= 1。
             データ= { 
                 FILEID = 114587。
                 FILESIZE = 5081851; 
                 fileUrl = "/11/2020/3/18/5c4e397d-13e8-4b05-bc18-3a093ca28dc6.jpg"。
             }。
             MSG = "文件上传成功"。
         } 
         * / 

    }の失敗:^(NSURLSessionDataTask * _Nullableタスク、NSError * _Nonnullエラー){ 
        
        faildBlock(エラー)
    }]。

 

II。倹約の手順を使用して、それを記録する方法もあります。

背面側は倹約ファイルを書き込んだ後、倹約/兄弟ディレクトリでコマンドを実行した後:

倹約- アウト /ユーザ/ UDC /デスクトップ/ thrift_interface -I ./ --genココアudc_all.thrift

生成

udc_all.h
udc_all.m 

2つのOCファイル。これら二つの文書は、直接インタフェース、それを呼び出すように関係しています。他のモデルああ、リターンコード、ステータスコード。リサイクル/ファイルで定義されている、自分自身を記述しないでください。

あなたが他の言語インタフェースファイルを生成したい場合は、以下のコマンドを試すことができます。

#thrift - アウト /ユーザ/ UDC /デスクトップ/ thrift_interface -I ./ - GENスウィフトudc_all.thriftの

#thrift - アウト /ユーザ/ UDC /デスクトップ/ thrift_interface -I ./ - GEN CPP udc_all_cpp.thrift 

#thrift - アウト /ユーザ/ UDC /デスクトップ/ thrift_interface -I ./ --gen JS udc_all_js.thrift

 

使用シンプル:

 

- (ボイド)-OCカプセル化されたインタフェースリクエストメソッド名{ 

    WLFAPIDataAccess __unsafe_unretained * weakSelf = 自己; 
    [self.asyncQueue addOperationWithBlock: ^(ボイド){ 
        
        @try { 
            
            self.transport = [[TSocketTransport ALLOC] initWithHostname:SERVER_HOST_IPポート:SERVER_PORT]。 // + IPホストコンピュータ初期化
            self.protocol = [[TBinaryProtocol ALLOC] initWithTransport:self.transport]; 
            self.server = [[UdcApiServiceClient ALLOC] initWithProtocol:self.protocol]; 
            
            NSError * エラー; 
            FileInfoRespfileresponseInfo = * [uploadFile self.server:self.udcheadファイル:FILEDATAエラー:&エラー];インターフェースコールバックモデル戻っデータが出て取得したudc_all.hファイル上に生成された//呼び出し
            
            // DLOG(@「UploadFile%RET = @ "fileresponseInfo);
             // UploadFile RET = FileInfoResp(レスポンス:ResponseInfo(コード:1、メッセージは:."ファイルが正常にアップロード")、のfileInfo:のFileInfo(ファイルID :24709、fileUrl:" / 11/2018/11/8 /8ad9212c-32ad-4d9f-8147-3c48077a21b3.JPG",fileName:"IMG_0005",fileSize:473044,originalFileName:"(null)",pkId:0))

[self.transport閉じる]; // 閉じる倹約送信回避資源の無駄遣い [自己asyncRequestResultWith:fileresponseInfo完全:完全に失敗しました:faildBlock]; } @catch(NSException * E){ NSStringの * errorMsg内容=e.description; // DLOG(@ "UploadFileエラー%@"、errorMsg内容); [weakSelf.mainQueue addOperationWithBlock:^(ボイド){ 完全(errorMsg内容)。 }]。 } }]。 }

 

おすすめ

転載: www.cnblogs.com/liuw-flexi/p/12517346.html