ios上传图片php获取url,Thinkphp+IOS上传图片该怎么处理接收和数据

刚开始接触APP端程序处理。

现在问题就卡在TP端接收IOS传过来的图片,请问TP端处理上传的图片数据该是怎样流程?要注意些什么问题,如数据格式应该是什么?

请问下面的处理方式正确吗?

ios文件如下:

XLSelectView.h文件:

// 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

XLSelectView.m文件:

// 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

Thinkphp处理文件:

$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 = 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' );

请赐教~多谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值