NSURLSesion 上传视频 展示进度条

//自己处理好自己的视频,压缩后生成data

- (void)uploadVideos:(NSArray *)videos andSource:(NSString *)source andUserId:(NSString *)userId andTitle:(NSString *)title andPart:(NSString *)part{

mytitle = [NSString stringWithString:title];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"……"]]cachePolicy:1 timeoutInterval:-1];

NSLog(@"request %@",request);

request.HTTPMethod = @"post";

// boundary可随意命名

NSString *boundary = @"yang";

// 拼接请求头

[request setValue:[NSString stringWithFormat:@"multipart/form-data;charset=utf-8;boundary=%@",boundary] forHTTPHeaderField:@"Content-Type"];

// 创建可变data 后面一样拼接

NSMutableData *myData = [NSMutableData data];

NSString *str = [NSString string];

NSString *name = @"userfile";

// 上传后文件的名字

NSString *filename = @"1.mp4";

  //这个地方是关键,不能随意命名,很多地方缺少了了\n  \r之类,若果格式命名不对   服务器可能会收到上传的文件

str = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\nContent-Type: %@\r\n\r\n",boundary,name,filename,@"video/quicktime"];

[myData appendData:[str dataUsingEncoding:NSUTF8StringEncoding]];

[myData appendData:[NSData dataWithData:videos[0]]];

str = [NSString stringWithFormat:@"\r\n--%@--",boundary];

[myData appendData:[str dataUsingEncoding:NSUTF8StringEncoding]];

request.HTTPBody = myData;

//执行上传

[[self.session uploadTaskWithRequest:request fromData:myData]resume];

//上传后监听上传进度

[self addProgressView];

}

// 懒加载   一个session

- (NSURLSession *)session

{

if(_session == nil)

{

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];

_session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];

}

return _session;

}

#pragma mark - 检测上传进度

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task

didSendBodyData:(int64_t)bytesSent

totalBytesSent:(int64_t)totalBytesSent

totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend

{

_progress.hidden = NO;

showProgress = (float)totalBytesSent / totalBytesExpectedToSend;

NSLog(@"%f %@", showProgress, [NSThread currentThread]);

//UI主线程显示progress

[self performSelectorOnMainThread:@selector(showProgress) withObject:nil waitUntilDone:YES];

}

时间: 2024-10-06 21:28:12

NSURLSesion 上传视频 展示进度条的相关文章

ajax 异步上传视频带进度条并提取缩略图

最近在做一个集富媒体功能于一身的项目.需要上传视频.这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图. 1 { 2 "thumbnail": "/slsxpt//upload/thumbnail/6f05d4985598160c548e6e8f537247c8.jpg", 3 "success": true, 4 "link": "/slsxpt//upload/video/6f05d498559

asp.net 文件批量选取,批量上传,带进度条,uploadify3.2 TOP

http://www.16aspx.com/Article/3444 asp.net 文件批量选取,批量上传,带进度条,uploadify3.2 TOP,布布扣,bubuko.com

用Struts2实现文件上传时显示进度条功能

最近在做一个资源共享的项目中,采用了Struts2.1.8+Spring2.5.6+hibernate3.32的框架整合方式进行开发.在文件上传这块,因为需要实现文件上传时显示进度条的功能,所以尝试了一下.怕以后忘记,先贴出来分享下.   要在上传文件时能显示进度条,首先需要实时的获知web服务端接收了多少字节,以及文件总大小,这里我们在页面上使用AJAX技术每一秒向服务器发送一次请求来获得需要的实时上传信息.但是当我们使用struts2后怎么在服务端获得实时的上传大小呢?这里需要用到commo

OSS 上传下载的进度条

ossClient.uploadFile和ossClient.downloadFile方法不支持进度条功能. 根据官方文档 https://help.aliyun.com/document_detail/84796.html?spm=a2c4g.11186623.6.791.40554d83cDiWSN 及代码示例制作加入进度条功能 https://github.com/aliyun/aliyun-oss-java-sdk/blob/master/src/samples/GetProgressS

Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认"拿来主义",只是我个人更喜欢凡是求个所以然.本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助. 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序(IHttpHandler)和

原生js上传文件 显示进度条

最近在做文件上传的功能,因为界面设计比较简单,就没有引用jq,但是网上大部分的上传插件都需要jq的支持.为了一个上传功能引用90多k的jq文件有点太小题大做了,所以就自己动手写了一个原生js上传的demo.下面是代码: HTML代码 <html> <head> <title></title> </head> <body> <input type="file" id="f" /> &l

ajaxSubmit() 上传文件和进度条显示

1.  首先引用js文件 <script type="text/javascript" src="/js/jquery/jquery.form.js"></script> //ajaxForm 依赖脚本 <script type="text/javascript" src="/js/jquery/jquery-1.8.0.min.js"></script> 2.  form 表单

ajax上传文件带进度条的思路

首先,需要2个重要的数据,total(文件总大小)和loaded(已经上传的大小),用 loaded/total,然后不断的更新进度条即可: 问:怎么拿到这两个重要数据呢? 答:在html5中有一个上传过程事件onprogress,在这个事件中可以读到这两个数据loaded和total:上传的时候不断的触发这个函数,然后更新进度条即可: 1 xhr.upload.onprogress = function(ev){ 2 if(ev.lengthComputable){ 3 //有可能文件时分块上

js(ext)中,设置[异步]上传的简单进度条

代码在updateHmis的历史记录中,此处存档 handler : function() { //显示进度条 Ext.MessageBox.wait('数据上传中...','提示'); //上传数据 updateService.UpdateHmis({ callback:function(result){ //隐藏窗口 Ext.MessageBox.hide(); //显示传输结果 alert(result); //重载窗口 window.location.reload(); },async: