天天看点

ios php 上传图片,php接收ios上传图片的写法

一直上传不成功,搜了N遍,尝试了N遍,终于找到了一个相关的,如下:

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

NSMutableDictionary*dic = [NSMutableDictionarydictionary];

[dicsetValue:self.foodNameField.textforKey:@"foodName"];

[dicsetValue:[GlobalClassshared].user.useridforKey:@"foodUser"];

[dicsetValue:self.foodAddressTextview.textforKey:@"foodAddr"];

[dicsetValue:self.foodPriceField.textforKey:@"foodPrice"];

[dicsetValue:self.recommendedReasonsTextview.textforKey:@"foodRecommend"];

NSData*data = [NSDatadataWithContentsOfFile:self.foodImagePath];

NSString*baseStr = [database64Encoding];

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

(CFStringRef)baseStr,

NULL,

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

kCFStringEncodingUTF8);

[dicsetValue:baseStringforKey:@"foodPicBig"];

NSString*jsonStr = [GlobalClassDataTOjsonString:dic];

NSMutableDictionary*mudic = [NSMutableDictionarydictionaryWithObjectsAndKeys:jsonStr,@"data",nilnil];

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

//图片

NSDictionary*imageDic;

if(self.foodImagePath) {

imageDic = [NSDictionarydictionaryWithObjectsAndKeys:self.foodImagePath,@"foodPicBig",nilnil];

}

[MBProgressHUDshowHUDAddedTo:self.mainScrollviewanimated:YES];

NetRequest*request = [NetRequestrequestWithTarget:selfSuccessedMethod:@selector(recommendFoodSuccess:)FailedMethod:@selector(failed:)];

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

NSString*baseStr = [imgDatabase64Encoding];

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

(CFStringRef)baseStr,

NULL,

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

kCFStringEncodingUTF8);

[urlRequestsetHTTPBody:[baseStringdataUsingEncoding:NSUTF8StringEncoding]];