我正在尝试上传用户从他们的图库中选择的图像,然后继续上传它们,即使用户将我的应用程序置于后台/挂起状态,然后开始使用其他一些应用程序。
但是,除了图像,我想在请求的 httpBody(如“Pro_Id”)中发送一些字典参数,以保持图像的分段上传
后台使用单个 NSURLSession uploadTaskWithRequest 上传多张图片
我已经完成了以下使用单个 NSURLSession uploadTaskWithRequest 后台上传多个图像中的回答 :
要在后台会话中上传,必须先将数据保存到文件中。
在 AppDelegate 中实现 1. application:handleEventsForBackgroundURLSession:completionHandler。2. 使用提供的标识符创建一个 NSURLSession。3. 按照通常的上传响应委托方法(例如处理 URLSession:didCompleteWithError: 中的响应:) 4. 完成事件处理后调用 URLSessionDidFinishEventsForBackgroundURLSession。
struct Media {
let key: String
let filename: String
let data: Data
let mimeType: String
init?(withImage image: UIImage, forKey key: String) {
self.key = key
self.mimeType = "image/jpeg"
self.filename = "kyleleeheadiconimage234567.jpg"
guard let data = image.jpegData(compressionQuality: 0.7) else { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Share扩展上传图像,但问题是当我添加后台任务时它给了我这个错误,它说在后台任务中不支持nsdata但是wwdc会话正在nsdata中上传图像.你能告诉我问题在哪里吗?以及我如何解决它
后台会话不支持从NSData上载任务
NSString *boundary = @"SportuondoFormBoundary";
NSString * configurationName = @"com.xxxxxxxx.PhotoSharing.backgroundConfiguration";
NSURLSessionConfiguration *configuration= [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:configurationName];
[configuration setSharedContainerIdentifier:kGroupNameToShareData];
configuration.HTTPAdditionalHeaders = @{
@"api-key" : @"55e76dc4bbae25b066cb",
@"Accept" : @"application/json",
@"Content-Type" : [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]
};
NSURLSession *session=[NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSMutableData *body = [NSMutableData data];
for (NSString *key in parameters)
{
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@\r\n", [parameters objectForKey:key]] dataUsingEncoding:NSUTF8StringEncoding]];
}
NSData *imageData = UIImageJPEGRepresentation(image, 0.8);
NSLog(@"imageDATE, %@", imageData);
if (imageData) …Run Code Online (Sandbox Code Playgroud) 我正在使用NSURLSessionUploadTask尝试新的花哨的iOS 7后台上传,当我使用defaultSessionConfiguration运行它似乎工作,但是一旦我尝试backgroundSessionConfiguration它崩溃在我调用uploadTaskWithRequest的行:
以下是代码示例.奇怪的是,虽然在线有无数的downloadTaskWithRequest示例,但我找不到一个将背景和上传结合在一起的单例.
//Create a session w/ background settings
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfiguration:@"identifierString.foo"];
NSURLSession *upLoadSession = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
//Create a file to upload
UIImage *image = [UIImage imageNamed:@"onboarding-4@2x.png"];
NSData *imageData = UIImagePNGRepresentation(image);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *URLs = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSString *documentsDirectory = [[URLs objectAtIndex:0] absoluteString];
NSString *filePath = [documentsDirectory stringByAppendingString:@"testfile.png"];
[imageData writeToFile:filePath atomically:YES];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://file.upload/destination"]];
[request setHTTPMethod:@"PUT"];
NSURLSessionUploadTask *uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:[NSURL URLWithString:filePath] completionHandler:^(NSData *data, NSURLResponse *response, …Run Code Online (Sandbox Code Playgroud)