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];

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。