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

info.plist 加入一行代码

<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>

//
//  ViewController.m
//  05-上传单个文件
//
//  Created by 鲁军 on 2021/2/13.
//#import "ViewController.h"
#define kBOUNDARY @"abc"
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.
}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//@"http://localhost:8080/MJServer/upload"// [self uploadFile];NSString *path=[[NSBundle mainBundle] pathForResource:@"IOSThreadNetwork.zip" ofType:nil];[self uploadFile:@"http://localhost:8080/MJServer/upload" fieldName:@"file" filePath:path];
}-(void)uploadFile:(NSString *)urlString fieldName:(NSString *)fieldNamefilePath:(NSString *)filePath{NSURL *url  =[NSURL URLWithString:urlString];NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];request.HTTPMethod=@"post";[request setValue:[NSString stringWithFormat:@"multipart/form-data;boundary=%@",kBOUNDARY] forHTTPHeaderField:@"Content-Type"];//request.HTTPBody=[self makeBody];request.HTTPBody=[self makeBody:fieldName filePath:filePath];[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {if(connectionError){NSLog(@"连接错误 %@",connectionError);return;}NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;if(httpResponse.statusCode==200||httpResponse.statusCode==304){//解析数据id json =[NSJSONSerialization JSONObjectWithData:data options:nil error:NULL];NSLog(@"%@",json);}else{NSLog(@"服务器内部错误");}}];}-(void)uploadFile1{NSURL *url  =[NSURL URLWithString:@"http://localhost:8080/MJServer/upload"];NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];request.HTTPMethod=@"post";[request setValue:[NSString stringWithFormat:@"multipart/form-data;boundary=%@",kBOUNDARY] forHTTPHeaderField:@"Content-Type"];request.HTTPBody=[self makeBody];[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {if(connectionError){NSLog(@"连接错误 %@",connectionError);return;}NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;if(httpResponse.statusCode==200||httpResponse.statusCode==304){//解析数据id json =[NSJSONSerialization JSONObjectWithData:data options:nil error:NULL];NSLog(@"%@",json);}else{NSLog(@"服务器内部错误");}}];}-(NSData *)makeBody:(NSString *)fieldNamefilePath:(NSString *)filePath{NSMutableData *mData=[NSMutableData data];NSMutableString *mString=[NSMutableString string];[mString appendFormat:@"--%@\r\n",kBOUNDARY];[mString appendFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n",fieldName,[filePath lastPathComponent]];[mString appendString:@"Content-Type: application/octet-stream\r\n"];[mString appendString:@"\r\n"];[mData appendData:[mString dataUsingEncoding:NSUTF8StringEncoding]];//第二部分// 加载文件// NSString *path =[[NSBundle mainBundle] pathForResource:@"07.jpg" ofType:nil];NSData *data =[NSData dataWithContentsOfFile:filePath];[mData appendData:data];NSString *end=[NSString stringWithFormat:@"\r\n--%@--",kBOUNDARY];[mData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];return  mData.copy;}-(NSData *)makeBody{NSMutableData *mData=[NSMutableData data];NSMutableString *mString=[NSMutableString string];[mString appendFormat:@"--%@\r\n",kBOUNDARY];[mString appendString:@"Content-Disposition: form-data; name=\"file\"; filename=\"07.jpg\"\r\n"];[mString appendString:@"Content-Type: image/jpeg\r\n"];[mString appendString:@"\r\n"];[mData appendData:[mString dataUsingEncoding:NSUTF8StringEncoding]];//第二部分// 加载文件NSString *path =[[NSBundle mainBundle] pathForResource:@"07.jpg" ofType:nil];NSData *data =[NSData dataWithContentsOfFile:path];[mData appendData:data];NSString *end=[NSString stringWithFormat:@"\r\n--%@--",kBOUNDARY];[mData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];return  mData.copy;}
@end

IOS开发基础之单文件上传基础最原始的方式相关推荐

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

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

  2. iOS开发网络篇 一一 文件上传

    下面使用两种方式来实现iOS网络中的文件上传. 注意: 文件上传要发送POST请求 使用 NSURLConnection 来实现 文件上传 使用 NSURLSession 来实现 文件上传 这两种方式 ...

  3. vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)

    今日份主题 Spring Boot文件上传(Form表单和Ajax方式) 在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类 StandardSe ...

  4. SpringMVC 单文件上传与多文件上传

    一.简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件 ...

  5. 网安基础学习之“文件上传漏洞原理与实现”

    网安基础学习之"文件上传漏洞原理与实现" 近期新闻头条上报出了"长沙市场监管局网站被上传了黄色页面",经过长沙市公安局网技支队的排查,该门户网站后台编辑器存在* ...

  6. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  7. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

    搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...

  8. themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

    实现文件上传和回显 1.新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 .pow.xml文件下的依赖如下 2.根据下图,创建如下文件 3.直接上代码 配置文 ...

  9. php 打包上传的文件,PHP单文件上传原理及上传函数的打包

    PHP单文件上传原理及上传函数的封装 服务器(临时文件)-->指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name.//在客户端设置上传文件的限制(文件类型 ...

最新文章

  1. 谷歌提出纯 MLP 构成的视觉架构,无需卷积、注意力 !
  2. Vector ArrayList Hashtable HashMap ArrayList LinkedList
  3. mysql用户添加_MySQL用户添加
  4. 冰豹lua驱动设置_卡宴?卡宴!——冰豹ROCCAT Kain 120 AIMO开箱
  5. 矩池云上安装MATLAB R2020a遇到的坑
  6. 优品景象 进销存系统推荐_初步了解WMS(仓库管理系统)
  7. FISCO BCOS Solidity 智能合约 return string[] This type is only supported in the new experimental ABI
  8. 基于TCP的网络聊天系统
  9. java飞机大战强化版_java飞机大战升级版源码(全彩,背景音乐,各种音效,不同僚机,子弹特效以及技能系统)...
  10. cpu与计算机其他的通信,PC与CPU224 通讯
  11. 苹果手机六位数密码忘记了用计算机,忘记iPhone锁屏密码?三种方法帮你顺利解决!...
  12. linux公社_如何在Linux中安装和使用dig和nslookup命令
  13. 在纽约寻找童真——新泽西州乐高乐园探索中心的美好一天
  14. MCE公司:MCE 中国生命科学研究促进奖获奖论文集锦三
  15. 已解决,软件V2报错 failed to read response header > websocket: close 1005 (no status)问题
  16. Spring Bean 的注入方式
  17. LeCun称梯度下降是最优雅的 ML 算法,Marcus:我不同意
  18. spring中事务提交后再发MQ消息
  19. 1734-AENTR/1734-AENT IP设置及在5000软件中组态方法
  20. 使用OpenTSDB进行Grafana视图展现

热门文章

  1. selenium java 断言_Java+Selenium+Testng自动化测试学习(三)— 断言
  2. c mysql连接池_在LINUX下用C/C++写了一个连接池(访问MYSQL)的类
  3. 带父节点的平衡二叉树_数据结构(八)平衡二叉树
  4. 「权威发布」2019年大学生电子设计竞赛题目
  5. PCB工程师的7个好习惯
  6. AD9516/AD9517时钟芯片寄存器参数配置说明
  7. 方向向量转欧拉角_欧拉角、旋转向量和旋转矩阵的相互转换
  8. manjaro双系统 windows_Win10和Manjaro双系统安装记录
  9. java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...
  10. mysql无法初始化数据库引擎_mysql使用模板解决旧数据处理,默认初始化数据的通用方法!...