【发布时间】:2014-02-14 05:44:08
【问题描述】:
我正在尝试使用以下方法上传文件:
- (void)uploadWithTarget:(NSString *)url andFileData:(NSData *)file andMD5Checksum:(NSString *)checksum
{
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];
NSURL * urll = [NSURL URLWithString:url];
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:urll];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest addValue:checksum forHTTPHeaderField:@"Md5Hash"];
[urlRequest addValue:@"Keep-Alive" forHTTPHeaderField:@"Connection"];
[urlRequest addValue:@"xml" forHTTPHeaderField:@"Content-Type"];
[urlRequest setHTTPBody:file];
NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithRequest:urlRequest];
[dataTask resume];
}
代表:
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data
{
NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Received String %@",str);
}
但我总是从我的服务器收到没有附加文件的错误!怎么了?
【问题讨论】:
-
你的HTTP请求的内容类型需要是multipart/form-data。此外,主体必须形成为多部分请求。你可以在这里找到教程:web.archive.org/web/20140311092840/http://zcentric.com/2008/08/…
-
看起来不错,但是如何在此处将动态 NSSTrings 转换为文件名:[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name="userfile"; filename=" ipodfile.jpg"rn"] dataUsingEncoding:NSUTF8StringEncoding]];
-
使用例如 NSString 的 stringWithFormat
-
上传完成后如何检查校验和
标签: ios iphone file-upload ios7 nsurlsession