我现在正在学习AFNetworking(v3.0),我尝试使用它将图像上传到node.js + express写的服务器。我发现每次我都试图在***中调用上传方法。我收到错误消息,说“请求失败:不可接受的内容类型:text / html”(错误消息的一部分)“,这是一个问题,也许是我的问题请求是错的?还是服务器端的问题?我是node.js的新手并表示。我猜是类型问题?也许但我不知道。如果你知道〜请回复我〜谢谢!
iOS方面:
NSDictionary *params = @{@"enctype": @"multipart/form-data"};
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://localhost:8080/images" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *data = UIImagePNGRepresentation(self.imageView.image);
[formData appendPartWithFileData:data name:@"pic" fileName:@"pic.png" mimeType:@"image/png"];
} error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionUploadTask *uploadTask;
uploadTask = [manager uploadTaskWithStreamedRequest:request progress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"上传成功");
}
}];
[uploadTask resume];
服务器端:
router.route('/images').post(multiparty(), function(req, res) {
fs.readFile(req.files.image.path, function(err, data) {
var imageName = req.files.image.name;
if (!imageName) {
console.log("there was an error");
res.json({message:"error", code:500});
} else {
var newPath = __dirname + "/uploads/fullsize/" + imageName;
fs.writeFile(newPath, data, function(err) {
res.json({message: 'successfully upload image!', code:200});
});
}
});
});
答案 0 :(得分:0)
您的iOS代码使用pic
作为字段名称,而不是image
,就像您在服务器端引用一样。一个或另一个需要改变。