您的位置:首页 > 编程语言 > PHP开发

php接收ios上传图片的写法

2016-07-30 20:12 441 查看
一直上传不成功,搜了N遍,尝试了N遍,终于找到了一个相关的,如下:

你可以看一下你传到后台后的数据,看看是不是收到的数据跟你上传的数据不一样。base64编码之后,data里面会含有一些“+”,而“+”通过post传到后台后,会被转换成空格。这样后台就接收不到图片了。你可以让后台将收到数据的空格替换成“+”,或者你看看我写的一个解决方法的

NSMutableDictionary *dic = [NSMutableDictionary dictionary];  

   [dic setValue:self.foodNameField.text forKey:@"foodName"];  

   [dic setValue:[GlobalClass shared].user.userid forKey:@"foodUser"];  

   [dic setValue:
4000
self.foodAddressTextview.text forKey:@"foodAddr"];  

   [dic setValue:self.foodPriceField.text forKey:@"foodPrice"];  

   [dic setValue:self.recommendedReasonsTextview.text forKey:@"foodRecommend"];  

     

   <span style="color:#ff0000;">NSData *data = [NSData dataWithContentsOfFile:self.foodImagePath];  

   NSString *baseStr = [data base64Encoding];  

   NSString *baseString = (__bridge NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  

                                                                                        (CFStringRef)baseStr,  

                                                                                        NULL,  

                                                                                        CFSTR(":/?#[]@!$&’()*+,;="),  

                                                                                        kCFStringEncodingUTF8);  

     

   [dic setValue:baseString forKey:@"foodPicBig"];</span>  

     

   NSString *jsonStr = [GlobalClass DataTOjsonString:dic];  

     

   NSMutableDictionary *mudic = [NSMutableDictionary dictionaryWithObjectsAndKeys:jsonStr,@"data", nil nil];  

   NSLog(@"参数:%@\n%@",jsonStr,mudic);  

     

   //图片  

   NSDictionary *imageDic;  

   if (self.foodImagePath) {  

       imageDic = [NSDictionary dictionaryWithObjectsAndKeys:self.foodImagePath,@"foodPicBig", nil nil];  

   }  

     

   [MBProgressHUD showHUDAddedTo:self.mainScrollview animated:YES];  

     

   NetRequest *request = [NetRequest requestWithTarget:self SuccessedMethod:@selector(recommendFoodSuccess:) FailedMethod:@selector(failed:)];  

   [request postWithPath:RecommendFoodUrl params:mudic ImgData:nil ssl:NO];
 
在一次项目中,要post图片到服务器上去,在之前要将图片转换成base64的格式。但是发现post上去的图片在服务器端总是不存在,经过与后台数据的对比发现image转成base64String里的“+”,post到服务器上都变成了空格。郁闷的很呀!开始没仔细去想,就直接叫后台将我post的string中的空格全部替换成“+”,这倒也算是解决了这个问题。但是总觉得这不是解决问题的最佳途径。后台经过查看一些资料,终于发现这个情况在post时,如果url中含有特殊字符(如“+=等”)就会出现的。但是在post之前对这些特殊符号做一次UTF8就可以了解决这个问题了。下面贴代码:

 NSString *baseStr = [imgData base64Encoding];  

 NSString *baseString = (__bridge NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,   

                                                       (CFStringRef)baseStr,   

                                                       NULL,   

                                               CFSTR(":/?#[]@!$&’()*+,;="),   

                                               kCFStringEncodingUTF8);  

[urlRequest setHTTPBody:[baseString dataUsingEncoding:NSUTF8StringEncoding]];
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: