作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 NSURLSessionUploadTask
和 fileUrl API 上传一个大文件。下面的代码是我写的上传一个大文件。我发现了这些问题:
-URLSession:task:didCompleteWithError:
中出现“超时”错误。在发送的包中未找到http body(使用wireshark)。这是我的代码:
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];
NSURL *url = [My URL];
fileName = [[DBList objectAtIndex:fileIndex] objectForKey:@"title"];
NSString *boundary = [self getBoundaryStr];
NSMutableData *dataSend = [[NSMutableData alloc] init];
[dataSend appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[dataSend appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"target_path"] dataUsingEncoding:NSUTF8StringEncoding]];
[dataSend appendData:[[NSString stringWithFormat:@"/%@",[NSString stringWithFormat:@"%@/%@/%@",UploaderController.getDestination,APP_UPLOADER,[Functions getDateString]]] dataUsingEncoding:NSUTF8StringEncoding]];
[dataSend appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[dataSend appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[dataSend appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file_path\"; filename=\"%@\"\r\n", fileName] dataUsingEncoding:NSUTF8StringEncoding]];
[dataSend appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary] forHTTPHeaderField:@"Content-Type"];
[request setValue:[@"authtok=" stringByAppendingString:[broker getNasAuthtok]] forHTTPHeaderField:@"Cookie"];
[request setHTTPBody:dataSend];
NSString *tempFile = [NSTemporaryDirectory() stringByAppendingPathComponent:@"uploadFile"];
NSURL *uploadfileURL = [[NSURL alloc] initFileURLWithPath:tempFile];
NSURLSessionUploadTask *sessionUploadTask = [session uploadTaskWithRequest:request fromFile:uploadfileURL];
[sessionUploadTask resume];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
有谁知道我错过了什么吗?非常感谢!!
或者只是上传视频之类的文件?
最佳答案
NSURLSessionUploadTask 将忽略 http 正文。
您可以将要上传的文件连同您已有的参数添加到 dataSend 对象。然后将dataSend写入本地文件。最后使用该本地文件的 url 创建一个 uploadTask。
棘手的部分是准备 dataSend 对象。您可以先尝试使用 NSURLConnection 发送 post 请求。然后使用上传任务将您的代码从 NSURLConnection 迁移到 NSURLSession。
关于upload - iOS 使用 NSURLSessionUploadTask 上传文件但没有发送 httpbody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924189/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!