在做一个IOS把图片上传到服务器的小功能
IOS用的是AFNETWORKing写的图片流上传,代码如下
NSString *filename=@"test.jpg";
AFHTTPRequestOperationManager *AFManager=[[AFHTTPRequestOperationManager alloc]initWithBaseURL:[NSURL URLWithString:@FileTranUrl]];
AFHTTPRequestOperation *operation=[AFManager POST:path parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formdata){[formdata appendPartWithFileData:imagedata name:name fileName:filename mimeType:@"image/jpeg"];} success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(operation,error);
}
}];
从代码中可以看出AFNetwork将图片数据,图片名称和该数据名称都传入了网络流中,我直接用C#直接将获得流保存的话生成的图片无法打开
C#主要代码
using (targetStream = new FileStream(filePathAndName, FileMode.Create, FileAccess.Write, FileShare.None))
{
const int bufferLen = 4096;
Byte[] buffer = new Byte[bufferLen];
int count = 0;
while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
{
targetStream.Write(buffer, 0, count);
filesize += count;
}
targetStream.Close();
sourceStream.Close();
}
我用Notepad++打开以文件流保存的这个文件,可以清楚的看到流的开头正是AFNetwork给发送的参数:
--Boundary+3064FAAD3A74E02F
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg
??JFIF H H (这里是乱码了,应该是图片的数据部分了)
现在的问题来了,从ios发过的流既包含该文件的格式,文件名等也保含了文件的数据,我查了很多C#关于流的操作,没有发现可以分开处理的,不知道你们是怎么解决的呢?
上传图片的最后一步了,我卡主了好久了。。。。
最后自己解决了,附上stackoverflow的提问地址