简单的“ PUT”使用AFNetworking上传文件 [英] Simple "PUT" file upload with AFNetworking

查看:585
本文介绍了简单的“ PUT”使用AFNetworking上传文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想这很简单,但是我不知道该怎么做。我想使用AFNetworking库将要使用PUT请求的文件上传到Web服务。这是我用来测试服务的curl命令

I suppose it is pretty simple but I couldn't figure out how to do it. I want to upload a file to using a PUT request to a webservice using AFNetworking library. This is the curl command I used to test the service

mac:~ user$ curl --verbose -T image.jpeg http://server.org:8001/social/test.jpg
* About to connect() to server.org port 8001 (#0)
*   Trying 123.45.123.123...
* connected
* Connected to server.org (123.45.123.123) port 8001 (#0)
> PUT /social/test.jpg HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: server.org:8001
> Accept: */*
> Content-Length: 78341
> Expect: 100-continue
> 
< HTTP/1.1 100 CONTINUE
< Server: cx1193719-b
< Content-Type: Text/Html
< Accept-Ranges: bytes
< Content-Length: 0
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Server: cx1193719-b
< Content-Type: Text/Html
< Accept-Ranges: bytes
< Content-Length: 0
< 
* Connection #0 to host server.org left intact
* Closing connection #0

我已经能够使用POST将文件上传并将表单数据上传到其他Web服务,我使用了PUT请求(通过AFHTTPClient和putPath),但是我仍然不知道如何进行这种简单的文件上传。

I've been able to upload file using POST and form data to other web services, I have used PUT requests (with AFHTTPClient and putPath) but still I don't understand how to do that simple file upload.

感谢您的帮助!

推荐答案

这是AFNetworking常见问题解答的一部分。检查 https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ

This is part of the AFNetworking FAQ. Check the https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ.

此外,如果您使用的是 AFHTTPClient 的子类,则可能需要使用类似的方法扩展它到:

Also if you are using a subclass of AFHTTPClient you might want to extend it with something similar to:

- (void)putPath:(NSString *)path
     parameters:(NSDictionary *)parameters
           data:(NSData*)data
        success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;

在此答案中建议: https://stackoverflow.com/a/9014768/634940

已实现该功能,并且您的 AFHTTPClient 子类的基本URL设置为 http://server.org ,您可以继续调用:

With that implemented and your AFHTTPClient subclass' base URL set to http://server.org you can go ahead and call:

NSData *imageData = [NSData dataWithContentsOfFile:pathToYourJPEGFile];
[client putPath:@"social/test.jpg"
     parameters:nil
           data:imageData
        success:yourSuccessBlock
        failure:yourFailureBlock];

这篇关于简单的“ PUT”使用AFNetworking上传文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆