【发布时间】:2011-05-27 18:44:49
【问题描述】:
我正在尝试从 iPhone 应用程序将图像上传到服务器
上传图片的PHP代码如下
if(isset($_POST['insertImage']))
{ //INSERT IMAGE -------------------
$method=safeData($_POST['insertImage']);
if($method=='true')
{
if(isset($_POST['userId']))
{
if(isset($_FILES['imageFile']))
{
if($_FILES['imageFile']['type']=="image/gif" || $_FILES['imageFile']['type']=="image/bmp" || $_FILES['imageFile']['type']=='image/jpeg' || $_FILES['imageFile']['type']=='image/jpg' || $_FILES['imageFile']['type']=='image/png')
{
if($_FILES['imageFile']['size']<=5250000)
{
$userId=safeData($_POST['userId']);
$newImgName=rand()."a".time().".".findexts($_FILES["imageFile"]["name"]); imgPath="./../admin/images/";
move_uploaded_file($_FILES['imageFile']['tmp_name'],$imgPath.$newImgName);
$data.=saveImageInfo($userId,$newImgName);
}
else
{
$data.="<List><ResponseCode>405</ResponseCode><Message>Maximum image size should not be more than 5mb </List>";
}
}
else
{
$data.="<List><ResponseCode>405</ResponseCode><Message>Invalid image format. only png,jpg,bmp formats supported</Message></List>"; }
}
else
{
$data.="<List><ResponseCode>405</ResponseCode><Message>imageFile method not found</Message></List>";
}
}
else
{
$data.="<List><ResponseCode>405</ResponseCode><Message>userId method not found</Message></List>";
}
}
else
{
$data.="<List><ResponseCode>405</ResponseCode><Message>invalid insertImage argument</Message></List>";
}
}
我使用以下代码将图像上传到服务器
+(NSData *)setUserImage:(NSData *)userImageData UserId:(int)UserId
{
NSString *result;
NSData *responseData;
@try {
NSURL *url = [[NSURL alloc] initWithString:webAddress];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
[req setHTTPMethod:@"POST"];
[req setValue:@"multipart/form-data; boundary=*****" forHTTPHeaderField:@"Content-Type"];//
NSMutableData *postBody = [NSMutableData data];
NSString *stringBoundary = [NSString stringWithString:@"*****"];
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"insertImage\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"true"] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userId\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"%d",UserId] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"imageFile\"; filename=\"myimagefile.png\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]];
//[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"imageFile\"; filename=\"myimagefile.png\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[NSData dataWithData:userImageData]];// dataUsingEncoding:NSASCIIStringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]];
[req setHTTPBody: postBody];//putParams];
NSHTTPURLResponse* response = nil;
NSError* error = [[[NSError alloc] init] autorelease];
responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
if(isInDebugMode)
NSLog(@"Result: %@", result);
[url release];
[req release];
IceCreamManFinderAppDelegate *delegate1=(IceCreamManFinderAppDelegate *)[UIApplication sharedApplication].delegate;
if(error.domain!=nil)
{
NSString *errorDesc=[[error userInfo] objectForKey:@"NSLocalizedDescription"];
delegate1.globalErrorMessage=errorDesc;
return nil;
}
else
{
delegate1.globalErrorMessage=nil;
}
}
@catch (NSException* ex) {
NSLog(@"Error: %@",ex);
}
return responseData;
}
从上面的代码我得到服务器的以下响应
图片格式无效。仅限 png、jpg、bmp 格式
我尝试了很多但没有成功。
请指出我哪里错了?
【问题讨论】: