iOS:使用AFNetworking上传ZIP文件

时间:2013-03-25 14:55:37

标签: ios nsurlconnection afnetworking

我必须将ZIP文件上传到服务器,我使用的是此代码:

NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:methode parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"data.xml"];

        ZipArchive  *zip1 = [[ZipArchive alloc] init];
        BOOL ret = [zip1 CreateZipFile2:[documentsDirectory stringByAppendingPathComponent:@"data.zip"]];

        ret = [zip1 addFileToZip:databasePath newname:@"data.xml"];

        [formData appendPartWithFileData:[NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@"data.zip"]]
                                    name:@"FILE"
                                fileName:@"data.zip"
                                mimeType:@"application/zip"];
    }];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
 [operation start];

ZIP文件很好。请求没问题。但服务器响应显示该文件已损坏。服务器只接收855字节的ZIP文件,而不是931字节。

服务器管理员告诉我(没有iOS体验)我必须设置正确的上传类型(就像HTML一样):

enctype="multipart/form-data"

1 个答案:

答案 0 :(得分:1)

在尝试将zip文件附加到请求之前,是否应该关闭zip文件的句柄?你无法确定它是否完全被写入存储,所以你可能会遇到这种情况。

[zip1 CloseZipFile2];