https://github.com/OpenFibers/OTHTTPRequest
项目中用到了,使用简单,还不错,非常轻量级的下载库,支持下载进度与下载速度,预期大小与当前下载大小。
下载
1)首先在下载的时候是存储在temp文件夹下;
2)下载完成之后,会写入到Documents 下;
- (void)start {
if (_request) {
[_request pause];
_request = nil;
}
// 下载网址
NSString *downloadURLString = @"http://dl.google.com/drive/installgoogledrive.dmg";
// 保存路径文件夹
NSString *documentPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
_request = [[OTHTTPDownloadRequest alloc] initWithURL:downloadURLString
cacheFile:[documentPath stringByAppendingPathComponent:@"temp"]
finishedFilePath:[documentPath stringByAppendingPathComponent:[downloadURLString lastPathComponent]]];
_request.delegate = self;
[_request start];
}
- (void)pause {
[_request pause];
}
// 下载信息等
- (void)downloadRequest:(OTHTTPDownloadRequest *)request
currentProgressUpdated:(float)progress
speed:(float)bytesPerSecond
totalReceived:(unsigned long long)totalReceived
expectedDataSize:(unsigned long long)expectedDataSize {
NSString *logInfo = [NSString stringWithFormat:
@"Download URL:\n%@\nprogress:%.2f %%\n\ndownloaded size:%.2fMB\n\nexpected size:%.2fMB\n\ncurrent speed:%.2f MB/s",
[request requestURL],
progress * 100,
[request downloadedFileSize] / (double) (1024 * 1024),
expectedDataSize / (double) (1024 * 1024),
request.averageDownloadSpeed / (double) (1024 * 1024)];
}
// 下载完成
- (void)downloadRequestFinished:(OTHTTPDownloadRequest *)request {
NSString *logInfo = [NSString stringWithFormat:
@"Download URL Finished:\n%@\n\nexpected size:%.2fMB",
[request requestURL],
[request expectedFileSize] / (double) (1024 * 1024)];
}
// 下载失败
- (void)downloadRequestFailed:(OTHTTPDownloadRequest *)request error:(NSError *)error {
NSString *logInfo = [NSString stringWithFormat:
@"Download URL Failed:\n%@\n\n%@",
[request requestURL],
error];
}
// 文件保存失败
-(void)downloadRequestWriteFileFailed:(OTHTTPDownloadRequest *)request exception:(NSException *)exception {
NSString *logInfo = [NSString stringWithFormat:
@"Write file failed:\n%@",
[request cacheFilePath]];
}
上传
上传,可以取消。
- (void)upload {
if (_request) {
[_request cancel];
_request = nil;
}
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Default" ofType:@"png"];
NSString *uploadURLString = @"upload";
_request = [[OTHTTPRequest alloc] initWithURL:[NSURL uploadURLString]];
[_request addPostValue:@"post_value" forKey:@"key"];
[_request addFileForKey:@"file" filePath:filePath fileName:@"Default.png" MIMEType:@"png"];
_request.delegate = self;
[_request start];
}
- (void)cancel {
[_request cancel];
}
// 上传完成
- (void)otHTTPRequestFinished:(OTHTTPRequest *)request {
NSString *responseString = request.responseString;
_infoView.text = responseString;
}
// 上传失败
- (void)otHTTPRequestFailed:(OTHTTPRequest *)request error:(NSError *)error {
NSString *errorString = [NSString stringWithFormat:@"Request failed with error: %@", error];
}
// 上传信息等
- (void)otHTTPRequest:(OTHTTPRequest *)request uploadProgressUpdated:(float)uploadProgress speed:(float)bytesPerSecond bytesSent:(unsigned long long)totalSent contentLength:(unsigned long long)contentLength {
NSString *logInfo = [NSString stringWithFormat:
@"Upload URL:\n%@\nprogress:%.2f %%\n\nuploaded size:%.2fKB\n\nexpected size:%.2fKB\n\ncurrent speed:%.2f KB/s",
[request URL],
uploadProgress * 100,
totalSent / (double) (1024),
contentLength / (double) (1024),
request.averageUploadSpeed / (double) (1024)];
}
网友评论