IOS客服端代码

@interface ViewController ()

{

NSString *boundary;

NSString *fileParam;

NSString *baseUrl;

NSString *fileName;

}

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

boundary = @"----------V2ymHFg03ehbqgZCaKO6jy";

fileParam = @"file";

baseUrl = @"http://url/from/server";

fileName = @"image.png";//此文件提前放在可读写区域

}

//请求方法

-(void)method4{

NSURL *uploadURL;

//文件路径处理(随意)

NSLog(@"请求路径为%@",uploadURL);

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:nil delegateQueue:nil];

//body

NSData *body = [self prepareDataForUpload];

//request

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:uploadURL];

[request setHTTPMethod:@"POST"];

// 以下2行是关键,NSURLSessionUploadTask不会自动添加Content-Type头

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];

[request setValue:contentType forHTTPHeaderField: @"Content-Type"];

NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:body completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){

NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"message: %@", message);

[session invalidateAndCancel];

}];

[uploadTask resume];

});

}

//生成bodyData

-(NSData*) prepareDataForUpload

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *uploadFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];//将图片放在了documents中

NSString *lastPathfileName = [uploadFilePath lastPathComponent];

NSMutableData *body = [NSMutableData data];

NSData *dataOfFile = [[NSData alloc] initWithContentsOfFile:uploadFilePath];

if (dataOfFile) {

[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", fileParam, lastPathfileName] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[@"Content-Type: application/zip\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:dataOfFile];

[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];

}

[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

return body;

}

Java服务器端代码

//创建一个临时文件存放要上传的文件,第一个参数为上传文件大小,第二个参数为存放的临时目录

DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024*5,new File("D:\\temp1"));

// 设置缓冲区大小为 5M

factory.setSizeThreshold(1024 * 1024 * 5);

// 创建一个文件上传的句柄

ServletFileUpload upload = new ServletFileUpload(factory);

//设置上传文件的整个大小和上传的单个文件大小

upload.setSizeMax(1024*1024*50);

upload.setFileSizeMax(1024*1024*5);

String[] fileExts = {"doc","zip","rar","jpg","txt"};

try { //把页面表单中的每一个表单元素解析成一个

FileItem List items = upload.parseRequest(request);

for (FileItem fileItem : items) {

//如果是一个普通的表单元素(type不是file的表单元素)

if(fileItem.isFormField()){

System.out.println(fileItem.getFieldName());

//得到对应表单元素的名字

System.out.println(fileItem.getString());

// 得到表单元素的值

}else{ //获取文件的后缀名

String fileName = fileItem.getName();//得到文件的名字

String fileExt = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());

if(Arrays.binarySearch(fileExts, fileExt)!=-1){

try { //将文件上传到项目的upload目录并命名,getRealPath可以得到该web项目下包含/upload的绝对路径//

fileItem.write(new File(request.getServletContext().getRealPath("/upload")+"/" + UUID.randomUUID().toString()+"."+fileExt));

fileItem.write(new File("D:/test2.png"));

logger.info("文件上传路径:"+request.getServletContext().getRealPath("/upload")+"/" + UUID.randomUUID().toString()+"."+fileExt);

} catch (Exception e) {

e.printStackTrace();

}

}else{

System.out.println("该文件类型不能够上传");

}

}

}

} catch (FileUploadBase.SizeLimitExceededException e) {

System.out.println("整个请求的大小超过了规定的大小...");

} catch (FileUploadBase.FileSizeLimitExceededException e) {

System.out.println("请求中一个上传文件的大小超过了规定的大小...");

}catch (FileUploadException e) {

e.printStackTrace();

}

java ios压缩图片,Java、ios图片上传相关推荐

  1. 10行代码学会在 Java 中 压缩 Excel 中的图片

    Spire.XLS for Java是专业的Java Excel API,使开发人员无需使用Microsoft Office或Microsoft Excel即可创建,管理,操作,转换和打印Excel工 ...

  2. 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传

    现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...

  3. java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现ftp连接.登陆.上传.下载.删除文件.获取目录.文件列表等操作. 本地调试,首先需要在本机上开启ftp服务和ftp站点. 测试代码 ...

  4. 【Android实战】----基于Retrofit实现多图片/文件、图文上传

    本文代码详见:https://github.com/honghailiang/RetrofitUpLoadImage 一.再次膜拜下Retrofit Retrofit无论从性能还是使用方便性上都很屌! ...

  5. 【OSS】图片加水印与上传

    图片加水印与上传 一.效果图 1.未添加水印图 2.添加水印效果图 二.需求场景 三.加水印 1. 图片上设置水印,字体如何设置? 2.图片有大有小,如何使水印大小自适应 3.水印位置如何设置 4.图 ...

  6. 图片太大不能上传怎么办?

    图片太大不能上传怎么办?不管你是上班族还是学生,这几乎是每个人都遇到过的问题,很多网站为了防止自己的服务器存储空间不那么快被占用完,都会对上传的图片大小进行限制,操作大小限制的图片是不能被上传成功的. ...

  7. java文件异步上传_[Java教程]原生javascript实现文件异步上传

    [Java教程]原生javascript实现文件异步上传 0 2017-10-25 19:00:06 效果图: 代码:(demo33.jsp) demo33.jsp名称文件确定 本文网址:http:/ ...

  8. ios开发之使用多文件上传的简单封装最原始的

    ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...

  9. IOS开发基础之单文件上传基础最原始的方式

    IOS开发基础之单文件上传基础最原始的方式 info.plist 加入一行代码 <key>NSAppTransportSecurity</key><dict>< ...

  10. axios获取图片显示_Vue.js+axios图片预览以及上传显示进度

    在平时项目开发中,我们经常会对文件做一些上传操作,不仅仅要实现基本需求,也要兼顾用户体验,根据自己在工作中遇到的问题谈谈对图片上传的预览以及上传进度的优化. 1.搭建项目 基于Vue.js+axios ...

最新文章

  1. Linux入门最终集! Vue SpringBoot Mybatis-Plus Linux 阿里云!
  2. 基于暗通道优先算法的去雾应用(Matlab/C++)
  3. Google Chrome浏览器可能在您不知情的情况下破坏了您的测试
  4. [Python]linux自己定义Python脚本命令
  5. C++学习之路 | PTA乙级—— 1008 数组元素循环右移问题 (20分)(精简)
  6. 【hdu4010】 Query on The Trees
  7. android怎么垂直居中,【Android】水平居中 垂直居中 中心居中
  8. 任务的紧急度,重要性划分 .
  9. mysql 免安装 密码_mysql免安装版配置与修改密码
  10. 计算机图形点阵表示实例,计算机图形学的应用实例(计算机图形作业)精选.doc
  11. java实现自动拨打电话语音提示
  12. 深度学习中神经网络的几种权重初始化方法
  13. 关于windows微软账号登陆不进去的问题
  14. 唱给挚爱高妹(大头妹)的歌~~~
  15. 老杨说运维 | 农信行业运维数字化和智能化转型实践分享
  16. 微软帝国踏上Windows7征途(图)
  17. 联发科MT6797/x20开发板设计,MT6797方案定制,MT6797芯片模块资料
  18. evpp mingw64编译过程
  19. ISO27001体系建立中的风险评估方法
  20. 【品优购电商学习记录01】工程结构

热门文章

  1. linux搭建vsftp服务器_Linux配置VSFTP服务器的方法
  2. python自动生成表格_Python自动整理 Excel 表格
  3. ajax参数是json数据类型,如何保护$ .ajax数据类型:json Post参数
  4. php对接V免签支付教程_【全网首发】最新版影视小程序搭建教程完整版
  5. java final定义_Java中final关键字的用法
  6. 华硕主板专用Ghost Win11 64位专业体验版 V2021.08
  7. win7 ie临时文件夹怎么修改存放位置
  8. 开启防火墙web服务器访问权限 开启必要端口共外部使用
  9. jdk中提供的Collection、Collections、Collector、Collectors你分的清楚?
  10. @Component和@Configuration作为配置类的差别