iOS Post上传图片, 文件流的形式

最近看到群里很多小伙伴有问上传图片服务器收不到, 解析不了.  可以说就一个属性  ContentType , 不论你使用第三方的AFN, 还是自己封装NSURLSesstion. 都需要把ContentType 设置和后台的解析方式一样(可能术语不是很标准, 总之就这个意思哈,谅解)

下面贴一段AFN的上传图片代码吧, 亲测有效, 不过可能只是针对我的服务器.  只要和后台同学沟通好就行了

  //此body是向后台传的参数, 因为是上传图片, 所以只给个图片名就够了, 这个和后台去问

NSDictionary * body = @{@"category":@"user",@"file":@"HeadImg"};

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

//ContentType设置

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",

@"text/html",

@"image/jpeg",

@"image/png",

@"application/octet-stream",

@"text/json",

nil];

manager.requestSerializer= [AFHTTPRequestSerializer serializer];

manager.responseSerializer= [AFHTTPResponseSerializer serializer];

[manager POST:url parameters:body constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

//把image  转为data , POST上传只能传data

NSData *data = UIImagePNGRepresentation(image);

//上传的参数(上传图片,以文件流的格式)

[formData appendPartWithFileData:data

name:@"file"

fileName:@"gauge.png"

mimeType:@"image/png"];

} progress:^(NSProgress * _Nonnull uploadProgress) {

} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

  //请求成功的block回调

NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

NSLog(@"上传成功%@",dic);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"上传失败%@",error);

}];

*  如果觉得不够过瘾的iOS 妹子可以加QQ  751045314 ,阿伟不介意我们深入沟通哦,要demo留下QQ发邮箱

时间: 2024-11-04 10:08:11

iOS Post上传图片, 文件流的形式的相关文章

阿里云附件文件流的形式上传、下载

1.View附件上传 @using (Html.BeginForm("StartUpLoad", "ReferenceDocument", new {id = ViewBag.Id}, FormMethod.Post, new {enctype = "multipart/form-data"})) { <input type="file" name="filedata" id="fileUp

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

Java中常用IO流之文件流的基本使用姿势

所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流.IO操作比较复杂,涉及到的系统调用比较多,相对操作内存而言性能很低.然而值得兴奋的是,Java提供了很多实现类以满足不同的使用场景,这样的实现类有很多,我只挑选些在日常编码中经常用到的类进行说明,本节主要介绍和文件操作相关的流,下面一起来瞧瞧吧. File File是Java在整个文件IO体系中比较

Java下载文件(流的形式)

1 @RequestMapping("download") 2 @ResponseBody 3 public void download(HttpServletResponse response, Integer userId, String fileUrl) { 4 try { 5 File file=new File(fileUrl); 6 String filename=file.getName(); 7 // 以流的形式下载文件. 8 InputStream fis = new

将zip文件以流的形式输出到页面

//将文件以流的形式输出//获取到zip文件的地址 String zipPath = businessMessageInter.downlodImgs(bussNo,imageIndexList,userLoginOut); HttpServletResponse response = SessionUtil.getResponse();response.setCharacterEncoding("UTF-8");response.setContentType("text/h

c#文件下载---以文件流形式

/// <summary> /// 文件下载 /// </summary> /// <param name="FileName">文件名</param> /// <param name="FilePath">路径</param> public void BigFileDownload(string FileName, string FilePath) { try { //以字符流的形式下载文件

webservice 以流的形式上传图片

[System.Web.Services.Protocols.SoapHeader("myHeader")] [WebMethod(Description = "上传文件到远程服务器.")] public string UploadFile(byte[] fileBytes, string type,string so_no) { try { string fileName = string.Empty; if (type.ToLower() == "jp

c#文件流上传图片

1.第一步 定义参数 //主表TableA public class TableA { public List<TableB> AccidentImgByte { get; set; } } //子表TableB public class TableB{ public Byte[] AccidentImgflow { get; set; }//文件流 public String AccidentImgName { get; set; }//文件名称 public String Accident

android上传图片并附带上传数据,文件流

关于android的图片上传有两种方式,一种是以文件流的方式上传,图片转换成二进制上穿.另一种是把图片转成base64方式上传,这篇博客我只介绍文件流,关于base64方式会在下一篇博客中介绍! 首先是安卓端:图片上传我们需要一个图片的路径,同过调用本地相册或者拍照可以返回图片路径,这个在这里就不说了:假设我们获得图片路径为PicPath; 下面是安卓代码: 首先我们要封装要发送的数据 数据封装好了以后用String path=URLEncodedUtils.format(Parameters,