gpt4 book ai didi

html - 使用 AFNetworking 上传图像 iOS 时匹配您的特定 HTML 表单

转载 作者:行者123 更新时间:2023-11-29 13:03:02 26 4
gpt4 key购买 nike

我是这个 HTML 表单帖子的新手,所以我在破译如何使用 AFNetworking 将这个 html 表单实现到帖子中时遇到了一些麻烦。我需要添加从我的应用程序将图像上传到服务器的功能。谁能帮我解决这个问题。

这是我要使用的 HTML 表单。

        <form action="http://myserver/uploadImage" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="45"/>
<input type="text" name="caption" size="80"/>
<input type="submit" value="Upload It"/>
<input type="hidden" name="pid" value="the user id"/>
<input type="hidden" name="token" value="a token"/>
<input type="hidden" name="ip" value="an IPaddress"/>
</form>

我找到了很多示例,例如下面的示例,因此我已经很好地掌握了要使用的方法。然而,对我来说断开连接的是如何以及在何处放置上面 html 表单中包含的每个字段。
send image along with other parameters with AFNetworking

最佳答案

这实际上比我做的要简单。就是没看到有例子把表单需要的参数放到字典里。我将对其进行布局,以便任何像我一样难以看到显而易见的东西的人都可以使用示例。

下面的代码是我问题中链接的直接副本,但我会指出一些异常(exception)情况。

NSData *imageToUpload = UIImageJPEGRepresentation(uploadedImgView.image, 1.0);//(uploadedImgView.image);

if (imageToUpload)
{
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"My Image Caption", @"caption", userId, @"pid", @"openSesame", @"token", @"users ip address", "ip", nil];

AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://myServer"]];

NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/uploadImage" parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData: imageToUpload name:@"file" fileName:@"temp.jpeg" mimeType:@"image/jpeg"];
}];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSDictionary *jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
//NSLog(@"response: %@",jsons);

}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
if([operation.response statusCode] == 403)
{
//NSLog(@"Upload Failed");
return;
}
//NSLog(@"error: %@", [operation error]);

}];

[operation start];

首先要注意的是 NSDictionary *parameters .这是您在表单中布置所需参数的地方。因此,正如您从问题中的表格中看到的那样,我需要一个:标题、pid、 token 和 ip 参数以及它们各自的值。

查看表格还有一个我没有提到的参数。这是哪一行 <input type="file" name="file" size="45"/>尤其。表单的该部分由这行代码处理。

[formData appendPartWithFileData: imageToUpload name:@"file" fileName:@"temp.jpeg" mimeType:@"image/jpeg"];

原来的问题有@"image"对于 name:值(value)。当我注意到我的表单期待 @"file" 时,我为此奋斗了大约三十分钟,试图弄清楚为什么我从服务器收到了 500 响应。 .更改后一切正常。

正如注意path: multipartFormRequestWithMethod: 中的参数被添加到 baseURL 的尾端。所以请求会转到@"http://myserver/uploadImage"根据表单操作的要求。

就像我说的那样,我希望这能为像我这样容易忽视它的人阐明显而易见的事实。

关于html - 使用 AFNetworking 上传图像 iOS 时匹配您的特定 HTML 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com