IOS post方式上传文件

+(void)uploadFiles:(NSArray *)files msgId:(NSString *)msgId obj:(id)obj userid:(NSString *)userid{

    //分界线的标识符

    for (NSMutableDictionary *filedic in files) {

    NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";

    //根据url初始化request

    NSString* URL = [NSString stringWithFormat:@"http://%@%@",NSLocalizedString(@"MQTT_IP", @""),NSLocalizedString(@"im_uploadfileURL", @"")];

    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URL]

                                                           cachePolicy:NSURLRequestReloadIgnoringLocalCacheData

                                                       timeoutInterval:10];

    //分界线 --AaB03x

    NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];

    //结束符 AaB03x--

    NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];

    //要上传的文件

   NSData *data = [NSData dataWithContentsOfFile:[filedic objectForKey:@"filepath"]];

    

    //http body的字符串

    NSMutableString *body=[[NSMutableString alloc]init];

    //参数的集合普通的keyvalue参数

    

    body = [self setParamsKey:@"uptype" value:@"1" body:body];

    body = [self setParamsKey:@"sid" value:msgId body:body];

    body = [self setParamsKey:@"uid" value:userid body:body];

        

    添加分界线,换行

    [body appendFormat:@"%@\r\n",MPboundary];

    //声明文件字段,文件名

    [body appendFormat:@"Content-Disposition: form-data; name=\"upfile\"; filename=\"%@\"\r\n",[filedic objectForKey:@"serverfilename"]];

    //声明上传文件的格式

    [body appendFormat:@"Content-Type: %@\r\n\r\n",[self GetContentType:[filedic objectForKey:@"serverfilename"]]];

    

    //声明结束符:--AaB03x--

    NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];

    //声明myRequestData,用来放入http body

    NSMutableData *myRequestData=[NSMutableData data];

    //body字符串转化为UTF8格式的二进制

    [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];

    //filedata加入

    [myRequestData appendData:data];

    //加入结束符--AaB03x--

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

    

    //设置HTTPHeaderContent-Type的值

    NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];

    //设置HTTPHeader

    [request setValue:content forHTTPHeaderField:@"Content-Type"];

    //设置Content-Length

    [request setValue:[NSString stringWithFormat:@"%d", [myRequestData length]] forHTTPHeaderField:@"Content-Length"];

    //设置http body

    [request setHTTPBody:myRequestData];

    //http method

    [request setHTTPMethod:@"POST"];

    

    //开线程下载

        dispatch_queue_t defaultQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

                dispatch_async(defaultQueue, ^{

                    // 另开线程

                    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

                    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

                    NSLog(@"上传状态返回值: %@", returnString);

//                   if ([returnString isEqualToString:@"0"]) {

//                       [self responseLoadFinish:files msgId:msgId upload:upload];

//                } else {

//                        [self responseLoadFail:files msgId:msgId upload:upload];

//                    }

            });

    }

}


+(NSMutableString*)setParamsKey:(NSString*)key value:(NSString*)value body:(NSMutableString*)body{

    NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";

    //分界线 --AaB03x

    NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];

    //添加分界线,换行

    [body appendFormat:@"%@\r\n",MPboundary];

    //添加字段名称,换2

    [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];

    //添加字段的值

    [body appendFormat:@"%@\r\n",value];

    return body;

}


+(NSString*)GetContentType:(NSString*)filename{

    if ([filename hasSuffix:@".avi"]) {

        return @"video/avi";

    }

    else if([filename hasSuffix:@".bmp"])

    {

        return @"application/x-bmp";

    }

    else if([filename hasSuffix:@"jpeg"])

    {

        return @"image/jpeg";

    }

    else if([filename hasSuffix:@"jpg"])

    {

        return @"image/jpeg";

    }

    else if([filename hasSuffix:@"png"])

    {

        return @"image/x-png";

    }

    else if([filename hasSuffix:@"mp3"])

    {

        return @"audio/mp3";

    }

    else if([filename hasSuffix:@"mp4"])

    {

        return @"video/mpeg4";

    }

    else if([filename hasSuffix:@"rmvb"])

    {

        return @"application/vnd.rn-realmedia-vbr";

    }

    else if([filename hasSuffix:@"txt"])

    {

        return @"text/plain";

    }

    else if([filename hasSuffix:@"xsl"])

    {

        return @"application/x-xls";

    }

    else if([filename hasSuffix:@"xslx"])

    {

        return @"application/x-xls";

    }

    else if([filename hasSuffix:@"xwd"])

    {

        return @"application/x-xwd";

    }

    else if([filename hasSuffix:@"doc"])

    {

        return @"application/msword";

    }

    else if([filename hasSuffix:@"docx"])

    {

        return @"application/msword";

    }

    else if([filename hasSuffix:@"ppt"])

    {

        return @"application/x-ppt";

    }

    else if([filename hasSuffix:@"pdf"])

    {

        return @"application/pdf";

    }

    return nil;

}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值