我正在尝试将一些图像文件从iPhone上传到我的网络服务器,我使用NSURLConnection通过sendSynchronousRequest发布数据。
我通过添加下面给出的几个字符串来准备我的身体。
NSString *check = @"Content-Disposition: form-data; name=\"userfile\"; filename=";
check = [check stringByAppendingString:@"\""];
check = [check stringByAppendingString:randomNumber];
check = [check stringByAppendingString:@".jpg"];
check = [check stringByAppendingString:@"\""];
check = [check stringByAppendingString:@"'\r\n'"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:check] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:app.imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
// now lets make the connection to the web
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
然而,当我尝试在服务器中获取图像文件时,它显示正确的名称,并在文件名后面加上“和a”。
答案 0 :(得分:0)
您可以在代码中添加此标志:
check = [check stringByAppendingString:@"\""];
check = [check stringByAppendingString:@"'\r\n'"];
答案 1 :(得分:0)
看起来您实际上是在代码的第5行和第6行添加“和”。将这些行替换为仅添加换行符的一行:
check = [check stringByAppendingString:@"\r\n"];
更好的方法是使用不会阻止主UI线程响应的异步调用。使用像AFNetworking这样的框架来获得更好的抽象级别。在AFNetworking中,使用可以更轻松地完成多部分帖子。