1

iPhoneアプリからサーバーへのオーディオファイルのアップロードにこのコードを使用しています。

 NSFileManager *fileManager = [[NSFileManager alloc] init];
    NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:mediaPath error: NULL];

    NSLog(@"%@",fileAttributes);
    if (fileAttributes != nil) {

        NSNumber *fileSize;
        fileSize = [fileAttributes objectForKey:NSFileSize];
        NSLog(@"%@",fileSize);

       // NSData *audioData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:audioData ofType:@""]];

        NSString *urlString = [NSString stringWithFormat:@"%@audioupload.php",mydomainurl];


        NSLog(@"%@",audioData);
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:[NSURL URLWithString:urlString]];
        [request setHTTPMethod:@"POST"];

        NSString *boundary = @"---------------------------14737809831466499882746641449";
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
        [request addValue:contentType forHTTPHeaderField:@"Content-Type"];

        NSMutableData *body = [NSMutableData data];
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".caf\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[NSData dataWithData:audioData]];
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [request setHTTPBody:body];

        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

        NSLog(@"%@",returnString);

そうすることで、.caf ファイルがバイナリに変換され、サーバーにオーディオをアップロードするのに時間がかかりすぎます (1 ~ 2 分)。これだけでなく、サーバーでファイルサイズが大きくなっています。含めました

ASIFormDataRequest 

しかし、私のコードでこれを使用する方法がわかりません。どうすればアップロード時間を短縮できるか教えてください。

しかし

4

1 に答える 1

1

これを非常に迅速に行うアプリがあり、私のコードはあなたのものと非常に似ています。

唯一の違いは次の行にあります。

 [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".caf\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

.caf 拡張子だけでなく、ファイル名があります。

[body appendData:[@"Content-Disposition: attachment; name=\"file2\"; filename=\"test.caf\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

また、次の行で音声データを本文に追加した後:

[body appendData:[NSData dataWithData:audioData]];

この行でフォームを閉じる前に:

[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

私はこの行を持っています:

[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

これがうまくいくことを願っています。そうでない場合は、サーバー側のコードを確認する必要があります。なぜなら、あなたと私は実質的に同じコードを持っており、私のものはオーディオを非常に迅速にアップロードするからです。

于 2012-11-29T16:06:38.247 に答える