iOS 文件下载 (AFNetwork 三方框架 文件名中文字符乱码问题解决)四
很久以前,就把这篇文章的andriod部分和服务器部分搞定,最近论文送审途中,于是写了几行简单的代码如下。
把AFNetwork拿来做一下。具体代码如下:
-(void)download
{
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];
NSString *urlString = @"http:192.168.0.179:8080/Myweb/download.do";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
// 指定下载文件保存的路径
// NSLog(@"%@ %@", targetPath, response.suggestedFilename);
// 将下载文件保存在缓存路径中
NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *retStr = [response.suggestedFilename stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@ \n",retStr);
NSString *path = [cacheDir stringByAppendingPathComponent:retStr];
NSURL *fileURL = [NSURL fileURLWithPath:path];
return fileURL;
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"%@ %@", filePath, error);
}];
[task resume];
}
1.使用NSURLRequest 创建一个request。
2.使用
NSURLSessionDownloadTask来建立一个task。
3.文件名想使用,服务器上的名字,调用
response.suggestedFilename即可
4.文件名中含有中文乱码,服务器端上次的代码需要作如下修改,使用URLEncoder:
修改http://blog.csdn.net/nothingl3/article/details/44409319 (已经修改)
String fileName=file.getName();
//注意这里一般都用URLEncoder的encode方法进行对文件名进行utf-8编码
String enFileName = URLEncoder.encode(fileName, "utf-8");
System.out.println(enFileName);
//浏览器下载
response.addHeader("Content-Disposition", "attachment;filename="+ enFileName);
5.iOS只需要将url---》为utf-8编码即可:
NSString *retStr = [response.suggestedFilename stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
文章来自:http://blog.csdn.net/nothingl3/article/details/45013665