文件上传、压缩解压 操作
来源:互联网 发布:知乎 怎么死最舒服 编辑:程序博客网 时间:2024/05/17 08:17
AFNetWork文件上传图片
<UINavigationControllerDelegate,UIImagePickerControllerDelegate,UIActionSheetDelegate>
@property (weak,nonatomic) IBOutletUIImageView *imageView;
- (IBAction)upload;
UIActionSheet *sheet = [[UIActionSheetalloc] initWithTitle:@"请选择图片"delegate:selfcancelButtonTitle:@"取消"destructiveButtonTitle:nilotherButtonTitles:@"拍照",@"相册",nil];
[sheet showInView:self.view.window];
#pragma mark - UIActionSheet
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIImagePickerController *ipc = [[UIImagePickerControlleralloc] init];
// 设置代理
ipc.delegate =self;
switch (buttonIndex) {
case0: { // 拍照
if (![UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])return;
ipc.sourceType =UIImagePickerControllerSourceTypeCamera;
break;
}
case1: { // 相册
if (![UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])return;
ipc.sourceType =UIImagePickerControllerSourceTypePhotoLibrary;
break;
}
default:
break;
}
// 显示控制器
[selfpresentViewController:ipc animated:YEScompletion:nil];
}
#pragma mark - UIImagePickerControllerDelegate
/**
* 在选择完图片后调用
*
* @param info 里面包含了图片信息
*/
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// 销毁控制器
[picker dismissViewControllerAnimated:YEScompletion:nil];
// 获得图片
UIImage *image = info[UIImagePickerControllerOriginalImage];
// 显示图片
self.imageView.image = image;
}
- (void)upload1
{
// 1.创建一个管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManagermanager];
// 2.封装参数(这个字典只能放非文件参数)
NSMutableDictionary *params = [NSMutableDictionarydictionary];
params[@"username"] =@"123";
params[@"age"] =@20;
params[@"pwd"] =@"456";
params[@"height"] =@1.55;
// 2.发送一个请求
NSString *url =@"http://upload";
[mgr POST:urlparameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// 在发送请求之前会自动调用这个block
// 需要在这个block中添加文件参数到formData中
/**
FileURL : 需要上传的文件的URL路径
name : 服务器那边接收文件用的参数名
fileName : (告诉服务器)所上传文件的文件名
mimeType : 所上传文件的文件类型
*/
NSURL *url = [[NSBundlemainBundle] URLForResource:@"itcast"withExtension:@"txt"];
[formData appendPartWithFileURL:urlname:@"file"fileName:@"test.txt"mimeType:@"text/plain"error:nil];
/**
FileData : 需要上传的文件的具体数据
name : 服务器那边接收文件用的参数名
fileName : (告诉服务器)所上传文件的文件名
mimeType : 所上传文件的文件类型
*/
// UIImage *image = [UIImage imageNamed:@"minion_01"];
// NSData *fileData = UIImagePNGRepresentation(image);
// [formData appendPartWithFileData:fileData name:@"file" fileName:@"haha.png" mimeType:@"image/png"];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"上传成功");
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"上传失败");
}];
}
- (IBAction)upload {
if (self.imageView.image ==nil) return;
// 1.创建一个管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManagermanager];
// 2.封装参数(这个字典只能放非文件参数)
NSMutableDictionary *params = [NSMutableDictionarydictionary];
params[@"username"] =@"123";
params[@"age"] =@20;
params[@"pwd"] =@"456";
params[@"height"] =@1.55;
// 2.发送一个请求
NSString *url =@"http://upload";
[mgr POST:urlparameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
NSData *fileData =UIImageJPEGRepresentation(self.imageView.image,1.0);
[formData appendPartWithFileData:fileDataname:@"file"fileName:@"haha.jpg"mimeType:@"image/jpeg"];
// 不是用这个方法来设置文件参数
// [formData appendPartWithFormData:fileData name:@"file"];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"上传成功");
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"上传失败");
}];
// 文件下载,文件比较大,断点续传技术:普遍所有的HTTP服务器都支持
// 文件上传,文件比较大,断点续传技术:一般的HTTP服务器都不支持,常用的技术用的是Socket(TCP\IP、UDP)
}
文件的压缩与解压
压缩
/**
zipFile :产生的zip文件的最终路径
directory :需要进行的压缩的文件夹路径
*/
[SSZipArchive createZipFileAtPath:zipFile withContentsOfDirectory:directory];
/**
zipFile :产生的zip文件的最终路径
files :这是一个数组,数组里面存放的是需要压缩的文件的路径
files = @[@"/Users/apple/Destop/1.png", @"/Users/apple/Destop/3.txt"]
*/
[SSZipArchive createZipFileAtPath:zipFile withFilesAtPaths:files];
解压
/**
zipFile :需要解压的zip文件的路径
dest :解压到什么地方
*/
[SSZipArchive unzipFileAtPath:zipFile toDestination:dest];
SSZipArchive 依赖于lib.dylib动态库
#import "SSZipArchive.h"
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES)lastObject];
// .获得需要压缩的文件夹
NSString *images = [cachesstringByAppendingPathComponent:@"images"];
// .创建一个zip文件(压缩)
NSString *zipFile = [cachesstringByAppendingPathComponent:@"images.zip"];
BOOL result = [SSZipArchivecreateZipFileAtPath:zipFile withContentsOfDirectory:images];
if(result) {
NSString *MIMEType = [selfMIMEType:[NSURLfileURLWithPath:zipFile]];
NSData *data = [NSDatadataWithContentsOfFile:zipFile];
[selfupload:@"images.zip"mimeType:MIMEType fileData:dataparams:@{@"username" :@"lisi"}];
}
文件解压
NSURL *url = [NSURLURLWithString:@"http://images.zip"];
NSURLSessionDownloadTask *task = [[NSURLSessionsharedSession] downloadTaskWithURL:urlcompletionHandler:^(NSURL *location,NSURLResponse *response, NSError *error) {
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES)lastObject];
//当前路径解压到指定的文件路径
[SSZipArchiveunzipFileAtPath:location.pathtoDestination:caches];
}];
[task resume];
- 文件上传、压缩解压 操作
- 文件下载,上传,压缩,解压
- 对文件压缩解压操作
- java上传文件,压缩,解压保存
- springMVC 上传压缩包文件、解压
- 文件上传压缩包并解压
- 文件上传---文件解压---读取文件---文件重新命名压缩
- VC 文件的解压和压缩操作
- XZ文件操作(压缩、解压)
- IOS 压缩与解压字符串(文件) 操作
- Java文件的压缩和解压操作
- 对文件进行解压(压缩流操作)
- linux 文件压缩解压、上传与下载(unit12)
- 压缩解压操作
- 文件压缩与解压
- linux压缩解压文件
- 压缩和解压文件
- c# 压缩解压文件
- Laravel队列的心得笔记
- 查看当前mysql使用频繁的sql语句
- Java 8系列之重新认识HashMap
- leetcode:295. Find Median from Data Stream
- Android错误之 java.lang.IllegalStateException: System services not available to Activities before onC
- 文件上传、压缩解压 操作
- oninput那些事
- 创建 Entity Framework 链接 MySql
- 【杭电oj2031】进制转换
- poj入门水题整理2
- DOM与DOM4J对XML文件的解析
- 8. String to Integer (atoi)
- 滑动均值Moving Average与中值滤波Moving Median
- STM8 PWM