0

サーバーに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ファイルは問題ありません。リクエストは大丈夫です。しかし、サーバーの応答は、ファイルが途中で破損したことを示しています。サーバーは931バイトではなく、855バイトのZIPファイルのみを受信します。

サーバー管理者は私に(iOSエクスペリエンスなしで)適切なアップロードタイプを設定する必要があると言いました(HTMLの場合のように):

enctype="multipart/form-data"
4

1 に答える 1

1

リクエストに添付する前に、zipファイルのハンドルを閉じてはいけませんか?そうしないと、ストレージに完全に書き込まれたかどうかを確認できないため、この動作が発生する可能性があります。

[zip1 CloseZipFile2];
于 2013-03-25T15:52:31.297 に答える