一 概述

  • 用网页执行文件请求的过程
  • 服务器端上传文件接收
  • IOS端发送文件上传请求

二 用网页执行文件请求的过程

2.1 启动服务器后,打开如下网址,到文件上传位置

http://localhost:8080/MJServer/

2.2 请求成功后页面


请求数据截取

-----------------------------161156855717866090712505782890
Content-Disposition: form-data; name="file"; filename="QQ20210705-0.jpg"
Content-Type: image/jpeg.....//省略了文件数据代码-----------------------------161156855717866090712505782890
Content-Disposition: form-data; name="username"-----------------------------161156855717866090712505782890--

2.3 根据请求返回结果得到请求参数

  • -----------------------------161156855717866090712505782890:请求开始
  • Content-Disposition: form-data; name=“file”; filename=“QQ20210705-0.jpg”:请求参数(文件名)
  • Content-Type: image/jpeg:传递文件类型
  • 换行
  • ExifMM:数据文件
  • -----------------------------161156855717866090712505782890:标识符
  • Content-Disposition: form-data; name=“username”:传递参数
  • 换行
  • -----------------------------161156855717866090712505782890–:结束标识符
  • 换行

三 服务器端上传文件接收

public class UploadAction extends BaseAction <UploadServiceResult> {// 文件上传到哪个文件夹下面(必须是存在的文件夹)static final String FILE_DIR = "/Users/zxc/Desktop/";private String username;private File file;private String fileFileName;public void setUsername(String username) {this.username = username;}public void setFile(File file) {this.file = file;}public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}public UploadAction(){service = new UploadServiceResult();}/*** 处理文件上传*/public void upload() throws Exception {if (file != null) {service.setSuccess(true);service.setMessage("上传成功");boolean isSuccess=file.renameTo(new File(FILE_DIR + fileFileName));System.out.print(isSuccess);System.out.println(username + "上传了" + fileFileName + "文件");} else {service.setSuccess(false);service.setMessage("上传失败");}write();}
}

四 IOS端发送文件上传请求

4.1 代码

#import "ViewController.h"
#define FileBoundary @"boundary"
#define NewLien @"\r\n"
#define Encode(str) [str dataUsingEncoding:NSUTF8StringEncoding]@interface ViewController ()
@end@implementation ViewController- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{[self upload];
}
- (void)upload
{// 1.请求路径NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/upload"];// 2.创建一个POST请求NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";// 3.设置请求体NSMutableData *body = [NSMutableData data];// 3.1.文件参数[body appendData:Encode(@"--")];[body appendData:Encode(FileBoundary)];[body appendData:Encode(NewLien)];[body appendData:Encode(@"Content-Disposition: form-data; name=\"file\"; filename=\"test123.png\"")];[body appendData:Encode(NewLien)];[body appendData:Encode(@"Content-Type: image/png")];[body appendData:Encode(NewLien)];[body appendData:Encode(NewLien)];UIImage *image = [UIImage imageNamed:@"minion_03"];NSData *imageData = UIImagePNGRepresentation(image);[body appendData:imageData];[body appendData:Encode(NewLien)];// 3.2.用户名参数[body appendData:Encode(@"--")];[body appendData:Encode(FileBoundary)];[body appendData:Encode(NewLien)];[body appendData:Encode(@"Content-Disposition: form-data; name=\"username\"")];[body appendData:Encode(NewLien)];[body appendData:Encode(NewLien)];[body appendData:Encode(@"张三")];[body appendData:Encode(NewLien)];// 3.3.结束标记[body appendData:Encode(@"--")];[body appendData:Encode(FileBoundary)];[body appendData:Encode(@"--")];[body appendData:Encode(NewLien)];request.HTTPBody = body;// 4.设置请求头(告诉服务器这次传给你的是文件数据,告诉服务器现在发送的是一个文件上传请求)NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", FileBoundary];[request setValue:contentType forHTTPHeaderField:@"Content-Type"];// 5.发送请求[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSLog(@"%@", dict);NSLog(@"%@",data);}];
}
@end

4.2 请求结果

服务器端上传成功,桌面有上传文件

app端收到服务器返回结果

IOS开发之——上传-文件上传(01)相关推荐

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

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

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

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

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

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

  4. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  5. Extjs 扩展Htmleditor,支持 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能...

    去年对Extjs的富文本框编辑器htmleditor做过扩展,扩展成图片上传和文件上传功能,感觉功能还是不够,原文如下: http://hi.baidu.com/jackvoilet/blog/ite ...

  6. Extjs 扩展Htmleditor,支持 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能

    最近在做项目的时候感觉还是不完美,于是在此基础上又进行了扩展,目前CJ_StarHtmlEditor支持: 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能,基本上能够满足要求了 ...

  7. Java图片上传/文件上传

    图片上传/文件上传 1. 创建一个web项目 新建一个JSP <%@ page language="java" import="java.util.*" ...

  8. iOS开发,导入c文件引发的Could not build module 'Foundation'问题

    iOS开发,导入c文件引发的 Unknown type name 'NSString' 问题 今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常 ...

  9. 如何最简洁的使用iOS 开发证书 和 Profile 文件

    如果你想在 iOS 设备(iPhone/iPad/iTouch)上调试, 需要有 iOS 开发证书和 Profile 文件. 在你拿到这两个文件之后,该如何使用呢? 证书使用说明: 1. iOS 开发 ...

  10. iOS开发证书和Profile文件 介绍以及使用

    IOS开发环境,证书和授权文件是什么? 一.成员介绍 1.Certification(证书) 证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种: 1)Developer Certificat ...

最新文章

  1. MLPerf基准测试再发榜,浪潮AI服务器刷新18项纪录
  2. 洛谷4072 SDOI2016征途 (斜率优化+dp)
  3. ElasticSearch安装拼音插件(pinyin)
  4. 一个全屏页面切换实例
  5. C# + .net下使用serialPort做串口开发 1
  6. 【虚拟化实战】存储设计之一存储类型
  7. 增大mysql修改表空间_innodb系统表空间维护方法
  8. get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...
  9. Visual C#常用函数和方法集汇总
  10. 在Ubuntu1404的64bit版本下安装caffe
  11. nginx与PHP配置
  12. mysql数据库写分页函数_mysql数据库写分页函数
  13. 15. GD32F103C8T6入门教程-adc单通道轮训采集
  14. “携号转网”正式试运行,这两个原因或致无法转网
  15. C#网络编程示例(note)
  16. ICMP报文类型和代码
  17. 高中python公开课怎么上好_Python公开课 - Requests高级功能
  18. c语言输出图形之小飞机
  19. oracle的oem登录,如何启动Oracle的OEM管理工具?
  20. 小众即时通信工具专项整治启动,关停“比邻”“聊聊”“密语”等9款违法App...

热门文章

  1. 理解WebKit和Chromium: WebKit, WebKit2, Chromium和Chrome介绍
  2. 主生产计划 操作教程 用友u8_用友U8:基础设置中的系统启用
  3. 求是科学班计算机怎么能够进,浙大游泳队获三全国冠军 都是学霸高考分数超700...
  4. 力软快速开发平台推荐功能之APP开发
  5. AgileConfig 一个轻量级配置中心
  6. 通过淘宝的ip地址库获取ip地址通用类的实现(C#版)
  7. 我的世界java版高清修复_[1.7.5]Minecraft我的世界高清材质修复补丁MCPATCHER HD
  8. openGL之API学习(一三九)求垂直向量
  9. 怎么看网站有没有被收录(百度360搜狗等搜索引擎通用)
  10. 全志H616学习笔记------Python