相关疑难解决方法(0)

当 iOS 应用程序在后台时使用 POST-API 上传图像

我正在尝试上传用户从他们的图库中选择的图像,然后继续上传它们,即使用户将我的应用程序置于后台/挂起状态,然后开始使用其他一些应用程序。

但是,除了图像,我想在请求的 httpBody(如“Pro_Id”)中发送一些字典参数,以保持图像的分段上传

后台使用单个 NSURLSession uploadTaskWithRequest 上传多张图片

我已经完成了以下使用单个 NSURLSession uploadTaskWithRequest 后台上传多个图像中的回答 :

要在后台会话中上传,必须先将数据保存到文件中。

  1. 使用 writeToFile:options: 将数据保存到文件。
  2. 调用 NSURLSession uploadTaskWithRequest:fromFile: 创建任务。请注意,请求不得包含 HTTPBody 中的数据,否则上传将失败。
  3. 在 URLSession:didCompleteWithError: 委托方法中处理完成。
  4. 您可能还想处理在应用程序处于后台时完成的上传。

在 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)

post multipartform-data image-uploading ios swift

6
推荐指数
1
解决办法
1002
查看次数

后台会话不支持从NSData上载任务

我正在尝试使用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)

iphone objective-c ios

4
推荐指数
1
解决办法
3825
查看次数

使用backgroundSessionConfiguration和NSURLSessionUploadTask上传会导致应用崩溃

我正在使用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)

iphone objective-c ios ios7 nsurlsession

3
推荐指数
2
解决办法
1万
查看次数