【发布时间】:2019-06-13 08:45:08
【问题描述】:
我正在使用AFNetworking 3.0 将一些图片上传到php 中的服务器。代码非常简单。但它不起作用,我不知道原因。
我总是得到 php 错误:
UPLOAD_ERR_INI_SIZE。
php.ini的限制大小是2M,我的图片大小只有200K,我试过用safari测试,效果很好。
当我使用非常小的图片时,6k,它也很有效。
这是我的代码:
客户:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml",@"text/html", @"application/json",@"text/plain",nil];
[manager POST:@"http://192.168.1.108/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
UIImage *image =[UIImage imageNamed:@"moon"];
NSData *data = UIImagePNGRepresentation(image);
//file name
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
[formData appendPartWithFileData:data name:@"img" fileName:fileName mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSString *result =[[ NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"fail %@", error);
}];
}
上传.php
<?php
$file = $_FILES['img'];
if ($file['error'] == 0) {
$typeArr = explode("/", $file["type"]);
if($typeArr[0]== "image"){
$imgType = array("png","jpg","jpeg");
if(in_array($typeArr[1], $imgType)){
$imgname = "file/".time().".".$typeArr[1];
$bol = move_uploaded_file($file["tmp_name"], $imgname);
if($bol){
echo "ok";
} else {
echo "fail";
};
};
}
} else {
echo $file['error'];
};
有什么帮助吗?谢谢。
【问题讨论】:
-
AFNetworking 只是一个网络框架。它不会对您的网络设置任何限制。您是否尝试过仅使用
NSURLSession进行上传? -
谢谢你,雾迈斯特。祝你有美好的一天。
标签: objective-c afnetworking-3