首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iphone编程中文件上传到HTTP服务器的实现

iphone编程中文件上传到HTTP服务器的实现
EN

Stack Overflow用户
提问于 2009-06-01 21:24:34
回答 6查看 110.9K关注 0票数 58

谁能给我提供一些链接或示例,以便使用iphone API将文件上传到HTTP服务器。

EN

回答 6

Stack Overflow用户

发布于 2009-06-02 00:44:32

下面的代码使用HTTP POST将NSData发送到The服务器。您还需要稍微了解PHP。

NSString *urlString = @"http://yourserver.com/upload.php";
NSString *filename = @"filename";
request= [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *postbody = [NSMutableData data];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:YOUR_NSDATA_HERE]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postbody];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnString);
票数 74
EN

Stack Overflow用户

发布于 2009-06-02 05:35:52

ASIHTTPRequest是网络API的一个很好的包装器,它使得上传文件变得非常容易。下面是他们的例子(但你也可以在iPhone上做这件事--我们把图片保存到“磁盘”上,然后再上传。

ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
票数 32
EN

Stack Overflow用户

发布于 2014-05-19 01:49:01

这不是一个替代的解决方案;而是对Brandon的流行答案的建议(看起来好像我没有足够的代表来评论那个答案)。如果你正在上传大文件,你可能会得到一个mmap malloc异常,因为你必须将文件读入内存才能将其发布到你的服务器上。

您可以通过替换以下代码来调整Brandon的代码:

[request setHTTPBody:postbody];

通过以下方式:

NSInputStream *stream = [[NSInputStream alloc] initWithData:postbody];
[request setHTTPBodyStream:stream];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/936855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档