ios上传图片文件到服务器,iOS AF上传多张图片到服务器 (图片类型:File)

废话不多说直接上网络请求工具类的代码

网络请求工具类 头文件.h 文件中:

/**

上传多张图片

@param path 路径

@param params 参数

@param images 图片数组

@param success success description

@param failure failure description

@param progress progress description

*/

+ (void)uploadMoreImagesWithPath:(NSString *)path

params:(NSDictionary *)params

images:(NSArray *)images

success:(HttpSuccessBlock)success

failure:(HttpFailureBlock)failure

progress:(HttpUploadProgressBlock)progress;

网络请求工具类 实现文件.m 文件中:

+ (void)uploadMoreImagesWithPath:(NSString *)path

params:(NSDictionary *)params

images:(NSArray *)images

success:(HttpSuccessBlock)success

failure:(HttpFailureBlock)failure

progress:(HttpUploadProgressBlock)progress {

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];

// 上传完整地址

NSString * urlString = [URL_main stringByAppendingPathComponent:path];

[manager POST:urlString parameters:params constructingBodyWithBlock:^(id _Nonnull formData) {

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

// 1) 取当前系统时间

NSDate *date = [NSDate date];

// 2) 使用日期格式化工具

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

// 3) 指定日期格式

[formatter setDateFormat:@"yyyyMMddHHmmss"];

NSString *dateStr = [formatter stringFromDate:date];

for (int i = 0; i < images.count; i++) {

UIImage *image = images[i];

NSData * pngImageData = UIImagePNGRepresentation(image);

// 4) 使用系统时间生成一个文件名

NSString *fileName = [NSString stringWithFormat:@"%@%d.png", dateStr,i + 1];

[formData appendPartWithFileData:pngImageData name:@"file" fileName:NSStringFormat(@"%@gauge.png",fileName) mimeType:@"image/png"];

}

} progress:^(NSProgress * _Nonnull uploadProgress) {

// 上传进度

progress(uploadProgress.fractionCompleted);

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

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

success(responseObject);

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

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

failure(error);

}];

}

上传单张图片原理同上,只需要将 .m 文件中的 for 循环改为单张的即可

NSData * pngImageData = UIImagePNGRepresentation(image);

NSString *fileName = [NSString stringWithFormat:@"%@.png", dateStr];

[formData appendPartWithFileData:pngImageData name:@"file" fileName:NSStringFormat(@"%@gauge.png",fileName) mimeType:@"image/png"];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
怎样修改这段代码让他让视频保存到本地并上传到数据库中void ShowVideo() { //创建数据库连接 MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "root", "password", "database", 3306, NULL, 0); mysql_query(&mysql, "set names utf8"); SOCKET server = socket(AF_INET, SOCK_STREAM, 0); char buffer[2048] = " "; SOCKET sockConn = accept(server, NULL, NULL); Mat videoData; while (true) { int bytes = recv(sockConn, buffer, 2048, 0); if (bytes <= 0) break; // 将接收到的视频数据拼接在一起 videoData.push_back(Mat(1, bytes, CV_8UC1, buffer).clone()); } closesocket(sockConn); size_t fileSize = 0; std::ofstream videoFile("server_video.avi", std::ios::binary | std::ios::app); while (true) { int bytes = recv(sockConn, buffer, 2048, 0); if (bytes <= 0) break; fileSize += bytes; // 将接收到的视频数据写入到.avi文件中 std::ofstream videoFile("server_video.avi", std::ios::binary | std::ios::app); videoFile.write(buffer, bytes); } videoFile.close(); VideoWriter writer("server_video.avi", cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), 25.0, Size(640, 480)); if (writer.isOpened()) { writer.write(videoData); } //读取视频文件内容并保存到数据库 ifstream fin("server_video.avi", ios::binary | ios::in); if (!fin) { cout << "打开文件失败" << endl; exit(0); } fin.seekg(0, ios::end); int filesize = fin.tellg(); fin.seekg(0, ios::beg); char* fileContent = new char[filesize]; fin.read(fileContent, filesize); string fileContentStr(fileContent, filesize);
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值