AfNetWorking上传图片 服务器识别图片失败

本文介绍了在使用AfNetworking上传图片时遇到的服务器识别问题。经过排查,发现关键在于fileName参数需要以.png或.jpeg结尾,并且name参数需与服务器请求参数名一致。通过将name参数调整为服务器保存图片的方法对应的参数(如'file'或'hello'),最终成功解决了上传失败的状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发的时候使用AfNetWorking 上传图片 服务器那边说识别不出来我这边的图片格式 但是我记得以前我也用过这个方法 是可以成功上传图片 的 下面的代码是block封装的上传图片代码

#pragma mark -- 上传图片 --
+ (void)uploadWithURLString:(NSString *)URLString
                 parameters:(id)parameters
                 uploadData:(NSData *)uploadData
                 uploadName:(NSString *)uploadName
                    success:(void (^)())success
                    failure:(void (^)(NSError *))failure {
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/plain", @"text/html",nil];
    [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id< AFMultipartFormData >  _Nonnull formData) {
        [formData appendPartWithFileData:uploadData name:uploadName fileName:[NSString stringWithFormat:@"%@.png",uploadName] mimeType:@"image/png"];
    } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (success) {
            success(responseObject);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (failure) {
            failure(error);
        }
    }];
}
使用代码 

[HttpUtil uploadWithURLString:[SaunaRoomBaseUrl stringByAppendingString:UploadImgFile] parameters:parmasDict uploadData:imgData uploadName:@"file" success:^( id  _Nullable responseObject) {
        NSLog(@"responseObject %@",responseObject);
        NSError* err = nil;
        UploadImgBean* bean = [[UploadImgBean alloc] initWithDictionary:responseObject error:&err];


    } failure:^( NSError * _Nonnull error) {
        NSLog(@"error %@",[error description]);
    }];

后面和服务端花了点时间对了下 发现这里需要注意两个问题

如下 

[formData appendPartWithFileData:uploadData name:uploadName fileName:[NSString stringWithFormat:@"%@.png",uploadName] mimeType:@"image/png"];

1. fileName 这个参数填写的必须是.png 或者jpeg 结尾的字符串

name 这个参数 这个要和你服务器的请求参数 名称一致 否则他那边识别不出来 比如 他的图片保存方法 是

 public void SaveImg(MultipartFile file...) 

那么你的name这个参数后面就填写file 即可 后面我和服务端把这个file改成 hello 重启服务器 然后我这边也改成 hello 发现 hello可以请求成功 填写其他不成功 亲测有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值