- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将两张图片上传到我的网络服务器。这是我现在要做的,上传一张图片:
NSData *imageData = UIImagePNGRepresentation(imageToSend);
// setting up the URL to post to
NSString *urlString = @"http://www.myweb.com.br/_resources/testeDir.php";
// setting up the request object now
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[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"];
/*
now lets create the body of the post
*/
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
//Create the connection with the string URL and kick it off
NSURLConnection *urlConnection = [NSURLConnection connectionWithRequest:request delegate:self];
[urlConnection start];
一张图片效果很好,但是,我如何同时发送两张图片?
一种选择是使用 AFNetworking,但到目前为止我无法让它工作,这是我尝试过的:
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:urlString];
NSMutableURLRequest *requestHTTP = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:imageData name:@"userfile" fileName:@"ipodfile.jpg" mimeType:@"image/jpeg"];
}];
AFJSONRequestOperation *operation = [[AFJSONRequestOperation alloc] initWithRequest:requestHTTP];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
//CGFloat progress = ((CGFloat)totalBytesWritten) / totalBytesExpectedToWrite * 100;
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Upload succes");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Upload failed");
}];
[operation start];
这是我的 PHP 代码:
<?php
$currentDirectory = getcwd();
$uploaddir = $currentDirectory."/4/HD/";
$uploaddir2 = $currentDirectory."/4/thumb/";
$file = basename($_FILES['userfile']['name']);
$uploadfile = $uploaddir . $file;
$file2 = basename($_FILES['userfile2']['name2']);
$uploadfile2 = $uploaddir2 . $file2;
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo $uploaddir."{$file}";
}
if (move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile2)) {
echo $uploaddir2."{$file2}";
}
?>
最佳答案
只需使用不同的名称向请求中添加另一张图片即可。
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];//MOD HERE
//and add
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile2\"; filename=\"ipodfile2.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
在添加两个文件之前不要关闭正文--%--\r\n
[编辑]我是这样做的:
if([[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSData *data = [NSData dataWithContentsOfFile:path];
//NSLog(@"image present:%d",[data length]);
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: attachment; name=\"file1\"; filename=\"image.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
//[body appendData:[self encryptThisData:data]];
[body appendData:data];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
if([[NSFileManager defaultManager] fileExistsAtPath:videoPath])
{
NSString *content = [NSString stringWithContentsOfFile:videoPath encoding:NSUTF8StringEncoding error:nil];
NSURL *pathURL = [NSURL URLWithString:content];
////NSLog(@"cur url is:%@",pathURL);
NSData *data = [NSData dataWithContentsOfURL:pathURL];
//NSLog(@"data len is:%d",[data length]);
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: attachment; name=\"file3\"; filename=\"video.mov\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
// close form
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// set request body
[request setHTTPBody:body];
关于ios - 上传两张图片到WebServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15660360/
我正在尝试根据报表类型提取财务报表信息。 让我更详细地解释一下。 我想从 XBRL 实例中提取损益表、 Assets 负债表和现金流量表——尤其是美国公认会计原则。 对我来说,完美的解决方案是在 XM
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.setupServerSocket()方法的一些代码示例,展示了WebServer.setupServe
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.start()方法的一些代码示例,展示了WebServer.start()的具体用法。这些代码示例主要来
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.createServerSocket()方法的一些代码示例,展示了WebServer.createSer
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.getXmlRpcServer()方法的一些代码示例,展示了WebServer.getXmlRpcSer
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.()方法的一些代码示例,展示了WebServer.()的具体用法。这些代码示例主要来源于Github/S
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.log()方法的一些代码示例,展示了WebServer.log()的具体用法。这些代码示例主要来源于Gi
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.newTask()方法的一些代码示例,展示了WebServer.newTask()的具体用法。这些代码示
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.allowConnection()方法的一些代码示例,展示了WebServer.allowConnect
本文整理了Java中org.apache.xmlrpc.webserver.WebServer.newThreadPool()方法的一些代码示例,展示了WebServer.newThreadPool(
我使用 Airflow 已经有一段时间了,它是由一位同事创建的。最近我遇到了一些错误,这需要我更深入地了解如何修复 Airflow 中的某些问题。 我确实理解这三个进程是什么,但我只是不明白运行它们时
这是一个简单的场景: 用户从 Web 应用程序的网页触发某些操作。这个操作很繁重,需要更多时间。 并且在服务器端操作完成之前,用户触发器用一些不同的参数说相同的操作。所以第二个请求的第二个操作也将开始
是否有一些标准的持续时间,爬虫必须在重复命中同一台服务器之间等待,以免使服务器负担过重。 如果没有,任何关于什么是爬虫的良好等待期的建议都可以被认为是礼貌的。 这个值是否也因服务器而异……如果是这样,
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我的网站目前在一台服务器上仍然可以。但是从其他人的经验来看,大流量可能会突然出现,基本上从一台服务器变成 4 台服务器(1 台负载均衡器、2 台 Web 服务器和 1 台用于数据库)。 在发生大流量后
我重新连接到 Freebsd 服务器 [netcat] 并且/tmp 上有一个文件我想下载它但是不能用我的浏览器浏览 那有什么方法可以下载吗?因为我无权访问其他文件夹。只是/tmp 最佳答案 您可以使
我可以知道应用程序服务器和 Web 服务器之间的区别吗?请列出每个例子。 最佳答案 一个'网络服务器 ' 通常是使用 http 提供内容的任何服务器程序。 (或 https )协议(protocol)
我是一名 .NET 开发人员,我已经使用 C# 工作了将近 3.5 年。我想了解 Web 服务器的工作原理,我的意思不是 65,000 英尺的概览。我想了解网络服务器的内部工作原理。 有哪些很好的资源
我的网络服务器不在家里。我在端口80上为其分配了一个地址,例如192.168.1.123。 我了解这正在我的本地网络上运行。如果我转到网络上的另一台计算机并输入服务器的IP地址,则可以看到该服务器。
应用服务器和网络服务器有什么区别? 最佳答案 大多数时候,这些术语“Web 服务器”和“应用程序服务器”可以互换使用。 以下是 Web 服务器和应用程序服务器功能上的一些主要区别: Web 服务器旨在
我是一名优秀的程序员,十分优秀!