• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

objective-c – Thinkphp+IOS上传图片该怎么处理接收和数据

php 搞代码 4年前 (2022-01-23) 29次浏览 已收录 0个评论
文章目录[隐藏]

刚开始接触APP端程序处理。
现在问题就卡在TP端接收IOS传过来的图片,请问TP端处理上传的图片数据该是怎样流程?要注意些什么问题,如数据格式应该是什么?
请问下面的处理方式正确吗?

ios文件如下:
XLSelectView.h文件:

<code>//  XLSelectView.h//  XLUploadImages//  Created by 薛林 on 16/6/18.//  Copyright © 2016年 xuelin. All rights reserved.#import @class ZLPhotoPickerViewController;@interface XLSelectView : UIView//跳转界面的block@property (nonatomic, copy) void(^presentVC)(ZLPhotoPickerViewController *pickerVC);//网络需要传入的参数@property (nonatomic, copy) NSString *postUrlString;//parameters@property (nonatomic, strong) NSDictionary *parameters;//后台接收图片的字段@property (nonatomic, copy) NSString *userfile;//加载xib+ (instancetype)loadnib;@end</code>

XLSelectView.m文件:

<code>//  XLSelectView.m//  XLUploadImages////  Created by 薛林 on 16/6/18.//  Copyright © 2016年 xuelin. All rights reserved.//#import "XLSelectView.h"#import "ZLPhoto.h"#import "AFNetworking.h"#import "DGGlobel.h"#import "DGSecret.h"@interface XLSelectView ()//保存图片二进制数据@property (nonatomic, strong) NSMutableDictionary *fileDict;@end@implementation XLSelectView#pragma mark - 懒加载字典- (NSMutableDictionary *)fileDict {        if (_fileDict == nil) {        _fileDict = [NSMutableDictionary dictionary];    }    return _fileDict;}#pragma mark - 加载xib+ (instancetype)loadnib {    return [[[NSBundle mainBundle]loadNibNamed:@"XLSelectView" owner:nil options:nil]lastObject];}- (IBAction)selectMorePic:(id)sender {    // 创建图片多选控制器    ZLPhotoPickerViewController *pickerVc = [[ZLPhotoPickerViewController alloc] init];    // 默认显示相册里面的内容SavePhotos    pickerVc.status = PickerViewShowStatusSavePhotos;    // 选择图片的最小数,默认是9张图片最大也是9张    pickerVc.maxCount = 9;    self.presentVC(pickerVc);        // 用block来回调    __weak typeof(self) weakSelf = self;    pickerVc.callBack = ^(NSArray *assets){        //遍历获取每一张图片 并转成二进制                for (ZLPhotoAssets *asset in assets) {            NSData *imageData = UIImagePNGRepresentation(asset.originImage);                //给图片起随机名字            NSString *filename = [NSString stringWithFormat:@"%d.png",arc4random_uniform(100)];                        //保存到fileDict中            [weakSelf.fileDict setObject:imageData forKey:filename];                    }            };}- (IBAction)oploadPicture:(id)sender {    [self original];}- (void)original{    //创建管理者    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];    manager.responseSerializer = [AFHTTPResponseSerializer serializer];            NSString *url = @"http://www.baidu.cn/index.php/Home/Index/ugc_tipic";    [manager.requestSerializer setValue:@"application/json, image/png" forHTTPHeaderField:@"Accept"];//    [manager.requestSerializer setValue:url.absoluteString forHTTPHeaderField:@"Referer"];    //    加密        NSString *mdSecret = [DGSecret md5:[DGGlobel getInstance].secret];            NSMutableDictionary *dic = [NSMutableDictionary dictionary];        [dic setValue:[DGGlobel getInstance].user_id forKey:@"user_id"];        [manager POST:url parameters:dic constructingBodyWithBlock:^(id  _Nonnull formData) {        [self.fileDict enumerateKeysAndObjectsUsingBlock:^(NSString *saveFliename, NSData *fileData, BOOL * _Nonnull stop) {            //获取到每个文件的二进制数据 拼接文本参数            [formData appendPartWithFileData:fileData name:@"file" fileName:saveFliename mimeType:@"image/jpg"];                    }];            } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {                NSDictionary *content = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];        NSLog(@"上传成功content = %@",content);            } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {        NSLog(@"上传失败%@",[error localizedDescription]);    }];}@end</code>

Thinkphp处理文件:

<code>$ugc_topic = M('ugc_topic');                        $ugc_image_type = M('ugc_image_type');              $tmp_str = '';$upload = $_POST;foreach($upload as $value => $key) {    $tmp_str.= '-----'.$key.'=>'.$value."\n\r";}// ----------------调试程序----------------------$filename = dirname(__FILE__).'/file.txt';$now_time = date('Y-m-d H:i:s' , time());$word2 = "{$now_time}\n\r{$tmp_str}\n\r\n\r";$fh = fopen($filename, "a+");echo fwrite($fh, $word2);fclose($fh);$user_id = I('post.user_id','','htmlspecialchars');             // 当前登陆成功的用户id$title = I('post.title','','htmlspecialchars');                 // 当前发布话题的标题$content = I('post.content','','htmlspecialchars');             // 当前发布话题的内容$remind_who = I('post.remind_who','','htmlspecialchars');         // 提醒谁看的用户id$image_name = I('post.image_name','','htmlspecialchars');     // 当前发布话题的图片header("Content-Type: application/octet-stream");$byte = $_POST['image_name'];$byte = str_replace(' ','',$byte);   //处理数据 $byte = str_ireplace("",'',$byte);$byte = pack("H*",$byte);      //16进制转换成二进制$filename2 = dirname(__FILE__).'/file.txt';$word22 = "\n\r\n\r{$byte}\n\r\n\r";$fhf = fopen($filename2, "a+");echo fwrite($fhf, $word22);fclose($fhf);header('Content-type: text/json; charset=UTF-8');$base64 = $_POST["file"];                 // 得到参数$img = base64_decode($base64);             // 将格式为base64的字符串解码$path = "md5(uniqid(rand()))".".jpg";     // 产生随机唯一的名字作为文件名file_put_contents($path, $img);         // 将图片保存到相应位置header('Content-type: text/json; charset=UTF-8' );</code>

请赐教~多谢!

回复内容:

刚开始接触APP端程序处理。
现在问题就卡在TP端接收IOS传过来的图片,请问TP端处理上传的图片数据该是怎样流程?要注意些什么问题,如数据格式应该是什么?
请问下面的处理方式正确吗?

ios文件如下:
XLSelectView.h文件:

<code>//  XLSelectView.h//  XLUploadImages//  Created by 薛林 on 16/6/18.//  Copyright © 2016年 xuelin. All rights reserved.#import @class ZLPhotoPickerViewController;@interface XLSelectView : UIView//跳转界面的block@property (nonatomic, copy) void(^presentVC)(ZLPhotoPickerViewController *pickerVC);//网络需要传入的参数@property (nonatomic, copy) NSString *postUrlString;//parameters@property (nonatomic, strong) NSDictionary *parameters;//后台接收图片的字段@property (nonatomic, copy) NSString *userfile;//加载xib+ (instancetype)loadnib;@end</code>

XLSelectView.m文件:

<code>//  XLSelectView.m//  XLUploadImages////  Created by 薛林 on 16/6/18.//  Copyright © 2016年 xuelin. All rights reserved.//#import "XLSelectView.h"#import "ZLPhoto.h"#import "AFNetworking.h"#import "DGGlobel.h"#import "DGSecret.h"@interface XLSelectView ()//保存图片二进制数据@property (nonatomic, strong) NSMutableDictionary *fileDict;@end@implementation XLSelectView#pragma mark - 懒加载字典- (NSMutableDictionary *)fileDict {        if (_fileDict == nil) {        _fileDict = [NSMutableDictionary dictionary];    }    return _fileDict;}#pragma mark - 加载xib+ (instancetype)loadnib {    return [[[NSBundle mainBundle]loadNibNamed:@"XLSelectView" owner:nil options:nil]lastObject];}- (IBAction)selectMorePic:(id)sender {    // 创建图片多选控制器    ZLPhotoPickerViewController *pickerVc = [[ZLPhotoPickerViewController alloc] init];    // 默认显示相册里面的内容SavePhotos    pickerVc.status = PickerViewShowStatusSavePhotos;    // 选择图片的最小数,默认是9张图片最大也是9张    pickerVc.maxCount = 9;    self.presentVC(pickerVc);        // 用block来回调    __weak typeof(self) weakSelf = self;    pickerVc.callBack = ^(NSArray *assets){        //遍历获取每一张图片 并转成二进制                for (ZLPhotoAssets *asset in assets) {            NSData *imageData = UIImagePNGRepresentation(asset.originImage);                //给图片起随机名字            NSString *filename = [NSString stringWithFormat:@"%d.png",arc4random_uniform(100)];                        //保存到fileDict中            [weakSelf.fileDict setObject:imageData forKey:filename];                    }            };}- (IBAction)oploadPicture:(id)sender {    [self original];}- (void)original{    //创建管理者    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];    manager.responseSerializer = [AFHTTPResponseSerializer serializer];            NSString *url = @"http://www.baidu.cn/index.php/Home/Index/ugc_tipic";    [manager.requestSerializer setValue:@"application/json, image/png" forHTTPHeaderField:@"Accept"];//    [manager.requestSerializer setValue:url.absoluteString forHTTPHeaderField:@"Referer"];    //    加密        NSString *mdSecret = [DGSecret md5:[DGGlobel getInstance].secret];            NSMutableDictionary *dic = [NSMutableDictionary dictionary];        [dic setValue:[DGGlobel getInstance].user_id forKey:@"user_id"];        [manager POST:url parameters:dic constructingBodyWithBlock:^(id  _Nonnull formData) {        [self.fileDict enumerateKeysAndObjectsUsingBlock:^(NSString *saveFliename, NSData *fileData, BOOL * _Nonnull stop) {            //获取到每个文件的二进制数据 拼接文本参数            [formData appendPartWithFileData:fileData name:@"file" fileName:saveFliename mimeType:@"image/jpg"];                    }];            } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {                NSDictionary *content = [NSJSONSerialization JSONObjectWithData:respo<mark style="color:transparent">本文来源gaodaimacom搞#^代%!码&网*</mark><pre>搞代gaodaima码

nseObject options:NSJSONReadingMutableContainers error:nil]; NSLog(@”上传成功content = %@”,content); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@”上传失败%@”,[error localizedDescription]); }];}@end

Thinkphp处理文件:

<code>$ugc_topic = M('ugc_topic');                        $ugc_image_type = M('ugc_image_type');              $tmp_str = '';$upload = $_POST;foreach($upload as $value => $key) {    $tmp_str.= '-----'.$key.'=>'.$value."\n\r";}// ----------------调试程序----------------------$filename = dirname(__FILE__).'/file.txt';$now_time = date('Y-m-d H:i:s' , time());$word2 = "{$now_time}\n\r{$tmp_str}\n\r\n\r";$fh = fopen($filename, "a+");echo fwrite($fh, $word2);fclose($fh);$user_id = I('post.user_id','','htmlspecialchars');             // 当前登陆成功的用户id$title = I('post.title','','htmlspecialchars');                 // 当前发布话题的标题$content = I('post.content','','htmlspecialchars');             // 当前发布话题的内容$remind_who = I('post.remind_who','','htmlspecialchars');         // 提醒谁看的用户id$image_name = I('post.image_name','','htmlspecialchars');     // 当前发布话题的图片header("Content-Type: application/octet-stream");$byte = $_POST['image_name'];$byte = str_replace(' ','',$byte);   //处理数据 $byte = str_ireplace("",'',$byte);$byte = pack("H*",$byte);      //16进制转换成二进制$filename2 = dirname(__FILE__).'/file.txt';$word22 = "\n\r\n\r{$byte}\n\r\n\r";$fhf = fopen($filename2, "a+");echo fwrite($fhf, $word22);fclose($fhf);header('Content-type: text/json; charset=UTF-8');$base64 = $_POST["file"];                 // 得到参数$img = base64_decode($base64);             // 将格式为base64的字符串解码$path = "md5(uniqid(rand()))".".jpg";     // 产生随机唯一的名字作为文件名file_put_contents($path, $img);         // 将图片保存到相应位置header('Content-type: text/json; charset=UTF-8' );</code>

请赐教~多谢!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:objective-c – Thinkphp+IOS上传图片该怎么处理接收和数据

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址