gpt4 book ai didi

iphone - 使用 objective-c 将文件从应用程序上传到服务器

转载 作者:行者123 更新时间:2023-11-29 13:24:01 24 4
gpt4 key购买 nike

我正在使用此代码将音频文件从 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 

但不知道如何在我的代码中使用它。谁能建议我如何减少上传时间。

但是

最佳答案

我有一个应用程序可以非常快速地执行此操作,而且我的代码与您的代码非常相似。

唯一的区别在于:

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

我希望这对你有用。如果不是,您应该检查您的服务器端代码,因为您和我的代码几乎相同,而我的上传音频速度非常快。

关于iphone - 使用 objective-c 将文件从应用程序上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13628103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com