Tag: nsurlsessionuploadtask

NSURLSessionUploadTask不调用委托方法NSURLSessionConfiguration backgroundSessionConfiguration

我正在尝试上传图像使用backgroundSessionConfiguration和NSURLSessionUploadTask保持应用程序后台模式下的实时上传过程。 但是,当我使用backgroundSessionConfiguration , NSURLSessionUploadTask不调用委托方法,而使用defaultSessionConfiguration它调用委托方法。 这是代码。 //Create a file to upload UIImage *image = [UIImage imageNamed:@"1.jpg"]; 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.jpg"]; [imageData writeToFile:filePath atomically:YES]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://file.upload/destination"]]; [request setHTTPMethod:@"PUT"]; NSURLSessionConfiguration *config […]

通过POST方法将图像上传到服务器

我想通过post方法将图像上传到服务器。 格式应该像["ImageName"=Image] 。 我已经尝试了下面的代码,但它不上传图像到服务器。 谁能帮我 ? -(void)SaveImageToServer:(UIImage*)getImage :(NSString*)imageName :(NSString*)getUrlToSaveImg withCompletionBlock:(void(^)(NSMutableArray *))completionBlock { NSMutableArray *arrrrr=[[NSMutableArray alloc]init]; NSMutableURLRequest *reqqq=[[NSMutableURLRequest alloc]initWithURL: [NSURL URLWithString:getUrlToSaveImg]]; NSData *dataOfImg=UIImagePNGRepresentation(getImage); NSString *stringImage = [dataOfImg base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; NSString *concat=[NSString stringWithFormat:@"fileName=%@",stringImage]; NSData *dataaa = [concat dataUsingEncoding:NSUTF8StringEncoding]; [reqqq setHTTPMethod:@"POST"]; [reqqq setHTTPBody:dataaa]; NSURLSessionConfiguration *configg=[NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession*sessionn=[NSURLSession sessionWithConfiguration:configg delegate:nil delegateQueue:[NSOperationQueue mainQueue]]; NSURLSessionDataTask *taskk=[sessionn dataTaskWithRequest:reqqq completionHandler:^(NSData *data,NSURLResponse *responce,NSError *error){ if(error) […]

暂停,继续,取消上传任务使用NSURLSession UploadTask

我正在开发一个应用程序来使用NSURLSession上传多个文件,现在我的文件成功上传。 但现在我想实现的是暂停,恢复和取消上传,就像我们在下载任务。 可能吗。? 任何帮助,将不胜感激。 日Thnx

NSURLSessionUploadTask如何读取服务器响应

我正在使用NSURLSessionUploadTask来上传文件。 这里是我的代码的一些部分不完整 let session:NSURLSession = NSURLSession(configuration: config, delegate: self, delegateQueue: NSOperationQueue .mainQueue()) let sessionTask:NSURLSessionUploadTask = session.uploadTaskWithStreamedRequest(request 但问题是我无法获得服务器发回的JSON响应。 下面的代表也没有开火,但其他代表正在开火 func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) 我正在使用的代码: func sendFileToServer1(fileName:String,fileData:NSData,serverURL:String){ let body = NSMutableData() let mimetype = "application/octet-stream" // let mimetype = "video/quicktime" let boundary = "Boundary-\(NSUUID().UUIDString)" let url = NSURL(string: serverURL) let request = NSMutableURLRequest(URL: […]

NSURLSessionUploadTask获取响应数据

我在使用NSURLSession框架方面有一些误解,这就是为什么我决定从头开始编写小型应用程序,没有AFFramework / Alamofire。 我有一个API,需要以下步骤来上传文件: POST文件数据 获取响应(JSON) 张贴一些JSON领域的api/save 我有这样的configuration后台会话: let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("myBackground") let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil) 我已经实现了2个方法: func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) 在那里我汇总所有的数据 和 func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) 我将这些数据转换为响应对象。 这个响应对象对我来说非常重要。 一切工作正常,而应用程序在前台,但我有背景问题。 情况1 我开始上传数据后,应用程序崩溃了。 根据WWDC我需要执行 func application(application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: () -> […]

NSURLSession,上传任务 – 获取实际的字节传输

我得到了错误报告,说我的iOS应用程序在缓慢连接上无法上传图像。 虽然我的超时时间可能不够长,但还有一个问题。 我发现上传进度很快达到了100%,尽pipe我可以在Charles看到字节仍在传输。 我使用NSURLSession的以下方法: – (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler 并实现下面的委托方法来接收进度事件: – (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend 其实我使用AFNetworking 2.5.2,它使用这种方法。 我的理论是,这个委托方法报告从手机发送的字节,而不是实际的字节传输。 以非常低的连接发送300kb的数据包,将立即发送5-6个包,并在等待接收时报告100%的进度。 是否有可能获得已确认传输的实际字节数的进度事件?

为什么NSURLSession uploadTaskWithRequest:fromData:无法上传到PHP服务器?

PHP代码工作正常。 我从同一台服务器上的HTML表单上传文件。 上传的文件从40K到2.0M不等。 file upload在运行PHP 5.3的服务器上激活 我发现这样的许多职位(没有答案): https : //stackoverflow.com/questions/19710388/using-nsurlsession-to-upload-an-image 。 这一个使用uploadTaskWithRequest:fromFile:而不是fromData: NSURLSession确保上传工作 这是NSURLSessionDataTask而不是uploadTaskWithRequest: 没有数据接收与NSURLSession 和一些似乎说uploadTaskWithRequest:fromData的post:根本不工作: NSURLSession:上传资产与背景传输 asynchronous上传与NSURLSession将无法正常工作,但同步NSURLConnection并将图像从iOS上传到PHP 我做了这样的应用程序,它返回的HTTP代码,我得到的代码200.服务器error_logfile upload后没有任何东西。 一切似乎工作正常,但无论发生什么,该文件不写入服务器。 任何想法还有什么我可以尝试找出什么是错的? 这里是php代码: <?php $file=''; $uploaddir=''; //////////////// echo 'file count=', count($_FILES),"\n"; var_dump($_FILES); echo "\n"; //////////////// if(isset($_FILES['userfile']['name'])){ $uploaddir = './photos/'; //Uploading to same directory as PHP file $file = basename($_FILES['userfile']['name']); echo "file is set"; $uploadFile = […]

使用iOS8中的NSUrlSession使用stream请求进行背景上传

之前在iOS7中,当我们尝试在后台使用stream请求上传时,我们得到以下exception 终止应用程序,由于未捕获的exception'NSGenericException',原因:'在后台会话中上传任务必须来自文件' 但是在iOS8中,我们尝试在后台使用stream上传时没有出现exception。 现在我的问题是 1)是不是上传与uploadTaskWithStreamedRequest:允许在iOS8? 2)在iOS8中,我使用了带有uploadTaskWithStreamedRequest的后台NSURLConfiguration。 我正在使用– (void)URLSession:(NSURLSession *)会话任务:(NSURLSessionTask *)任务needNewBodyStream:(void(^)(NSInputStream *))completionHandler提供stream到NSUrlSession。 当应用程序在前台它工作正常,上传我的文件到服务器。 但是一旦应用程序在后台启动,stream将结束,并且NSURLSession完成,并显示以下错误消息 错误域= NSURLErrorDomain代码= -997“丢失连接到后台传输服务” 我认为当应用程序在后台我的stream结束。 现在我的问题是,我应该在哪些runloop我应该安排我的stream,或让我知道如果我的理解有任何错误。 -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task needNewBodyStream:(void (^)(NSInputStream *))completionHandler { // Open producer/consumer streams. We open the producerStream straight // away. We leave the consumerStream alone; NSURLConnection will deal // with it. NSLog(@"%@", [NSThread currentThread]); NSInputStream *consStream; NSOutputStream *prodStream; […]

在使用NSURLSession在后台上传文件时无法保持恒定速度

我试图在AFURLSessionManager的背景下以小批量10的方式上传一些100图像到S3中,就像这里正在做的事情一样 – 在后台pipe理活动任务的数量NSURLSession 我正在使用一个共享的NSURLSession,并在完成一些任务时根据更多的任务添加任务。 每个文件的平均大小约为1.6 MB,每个任务队列保证运行的任务数为5 这里是我添加任务的方法:(也可以作为一个更容易阅读的要点 ) – (void) addTasksToSessionWithTaskObject:(Task*)taskObject withSessionInitialisationNeeded:(BOOL) needed{ NSString *filePath = [[NSBundle mainBundle] pathForResource:pathForResourceFile ofType:resourceFileType]; S3PutObjectRequest *putObjectRequest = [[S3PutObjectRequest alloc] initWithKey:targetFileKey inBucket:_bucketname]; putObjectRequest.cannedACL = [S3CannedACL publicReadWrite]; putObjectRequest.filename = filePath; putObjectRequest.contentType = [resourceFileType isEqualToString:@"MOV"] ? @"movie/mov" : @"image/jpg"; putObjectRequest.endpoint = @"http://s3.amazonaws.com"; putObjectRequest.contentLength=[[[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil] fileSize]; putObjectRequest.delegate = self; [putObjectRequest configureURLRequest]; […]