zoukankan      html  css  js  c++  java
  • ios 多文件上传

    /**

     *  上传多个文件

     *

     *  @param url      请求接口地址

     *  @param filedata 文件名称和数据(key:value)

     *  @param btnName  上传网页的btn (接口)

     *  @param parms    附加上传参数

     */

    -(void)httpSendDataWithUrl:(NSString*)url data:(NSDictionary*)filedata name:(NSString*)btnName parms:(NSDictionary*)parms

    {

        

        NSString *httpUrl=url;

        //----------------------Post方法的URL和请求头-----------

        NSMutableURLRequest *mRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:httpUrl]];

        mRequest.HTTPMethod=@"post";

        //Content-Type:multipart/form-data; boundary=----WebKitFormBoundarywrkpby4PbAPpMcFc

        NSString *str=[NSString stringWithFormat:@"multipart/form-data; boundary=%@",KEYWard];

        [mRequest setValue:str forHTTPHeaderField :@"Content-Type"];

        mRequest.HTTPBody=[self makeBodydata:filedata name:btnName parms:parms];

        

        //----------------------Post方法的URL和请求头-----------

        [NSURLConnection sendAsynchronousRequest:mRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

            if (!connectionError) {

                NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

                if (httpResponse.statusCode == 200) {

                    NSError *error=nil;

                    id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

                    if (error) {

                        NSLog(@"json解析错误!!!!!!");

                    }

                    else

                    {

                        NSLog(@"%@",json);

                    }

                }else{

                    NSLog(@"服务器内部错误");

                }

            }else{

                NSLog(@"请求错误%@",connectionError);

            }

            

        }];

        

    }

    -(NSData*)makeBodydata:(NSDictionary*)filedata name:(NSString*)btnName parms:(NSDictionary*)parms

    {

        NSMutableData *mData = [NSMutableData data];

        //准备文件

        [filedata enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSData *data, BOOL *stop) {

            //        ------WebKitFormBoundarycwuJbGNWchuHGPRT

            //        Content-Disposition: form-data; name="userfile[]"; filename="Snip20150701_10.png"

            //        Content-Type: image/png

            //1

            NSMutableString *mStr = [NSMutableString string];

            [mStr appendFormat:@" --%@ ",KEYWard];

            [mStr appendFormat:@"Content-Disposition: form-data; name="%@"; filename="%@" ",btnName,key];

            [mStr appendString:@"application/octet-stream "];

            [mStr appendString:@" "];

            [mData appendData:[mStr dataUsingEncoding:NSUTF8StringEncoding]];

            //2

            [mData appendData:data];

            

        }];

        

        

        

        //准备表单中的数据

        [parms enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, BOOL *stop) {

            //        ------WebKitFormBoundarycwuJbGNWchuHGPRT

            //        Content-Disposition: form-data; name="username"

            //

            //        345345

            

            

            NSMutableString *mStr = [NSMutableString string];

            [mStr appendFormat:@" --%@ ",KEYWard];

            [mStr appendFormat:@"Content-Disposition: form-data; name="%@" ",key];

            [mStr appendString:@" "];

            [mStr appendFormat:@"%@ ",value];

            [mData appendData:[mStr dataUsingEncoding:NSUTF8StringEncoding]];

            

        }];

        

        

        

        

        NSString *end = [NSString stringWithFormat:@"--%@-- ",KEYWard];

        [mData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];

        return mData.copy;

     

        

    }

  • 相关阅读:
    【ybtoj高效进阶 21173】简单区间(分治)
    【ybtoj高效进阶 21170】投篮训练(贪心)(线段树)(构造)
    【ybtoj高效进阶 21172】筹备计划(线段树)(树状数组)
    【ybtoj高效进阶 21168】打字机器(Trie树)(LCA)(值域线段树)
    【ybtoj高效进阶 21169】毁灭计划(分类讨论)(树形DP)
    【ybtoj高效进阶 21167】旅游计划(基环树)(DP)(单调队列)
    Day-15 面向对象02 成员
    Day-14 初识面向对象
    Day 13 内置函数(点击网址进入思维导图)、递归、二分法
    Day12 生成器函数-推导式
  • 原文地址:https://www.cnblogs.com/tangranyang/p/4617486.html
Copyright © 2011-2022 走看看