使用 AFNetworking POST jpeg 上传

2023-11-22

我一生都无法弄清楚为什么当我使用 AFNetworking 时这不起作用。它与 ASIHTTP 一起工作。这对我来说都是很新鲜的。但我不明白为什么文件不再从 $_FILES 传输到服务器的硬盘。这是 iOS 代码:

- (IBAction)uploadPressed 
{
[self.fileName resignFirstResponder];
NSURL *remoteUrl = [NSURL URLWithString:@"http://mysite.com"];

NSTimeInterval timeInterval = [NSDate timeIntervalSinceReferenceDate];
NSString *photoName=[NSString stringWithFormat:@"%lf-Photo.jpeg",timeInterval];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

// the path to write file
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:photoName];
NSData * photoImageData = UIImageJPEGRepresentation(self.remoteImage.image, 1.0);
[photoImageData writeToFile:filePath atomically:YES];

NSLog(@"photo written to path: e%@", filePath);

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:remoteUrl];
NSMutableURLRequest *afRequest = [httpClient multipartFormRequestWithMethod:@"POST" 
                                                                       path:@"/photos" 
                                                                 parameters:nil 
                                                  constructingBodyWithBlock:^(id <AFMultipartFormData>formData) 
                                  {
                                      [formData appendPartWithFormData:[self.fileName.text dataUsingEncoding:NSUTF8StringEncoding] 
                                                                  name:@"name"];


                                      [formData appendPartWithFileData:photoImageData 
                                                                  name:self.fileName.text 
                                                              fileName:filePath 
                                                              mimeType:@"image/jpeg"]; 
                                  }
                                  ];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {

    NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);

}];

   [operation setCompletionBlock:^{
    NSLog(@"%@", operation.responseString); //Gives a very scary warning
}];

[operation start];    



}

我曾经这样做过:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:remoteUrl];
[request setPostValue:self.fileName.text forKey:@"name"];
[request setFile:filePath forKey:@"filename"];
[request setDelegate:self];
[request startAsynchronous];

这是我的 PHP:

 {
// these could be stored in a .ini file and loaded
// via parse_ini_file()... however, this will suffice
// for an example
$codes = Array(
    100 => 'Continue',
    101 => 'Switching Protocols',
    200 => 'OK',
    201 => 'Created',
    202 => 'Accepted',
    203 => 'Non-Authoritative Information',
    204 => 'No Content',
    205 => 'Reset Content',
    206 => 'Partial Content',
    300 => 'Multiple Choices',
    301 => 'Moved Permanently',
    302 => 'Found',
    303 => 'See Other',
    304 => 'Not Modified',
    305 => 'Use Proxy',
    306 => '(Unused)',
    307 => 'Temporary Redirect',
    400 => 'Bad Request',
    401 => 'Unauthorized',
    402 => 'Payment Required',
    403 => 'Forbidden',
    404 => 'Not Found',
    405 => 'Method Not Allowed',
    406 => 'Not Acceptable',
    407 => 'Proxy Authentication Required',
    408 => 'Request Timeout',
    409 => 'Conflict',
    410 => 'Gone',
    411 => 'Length Required',
    412 => 'Precondition Failed',
    413 => 'Request Entity Too Large',
    414 => 'Request-URI Too Long',
    415 => 'Unsupported Media Type',
    416 => 'Requested Range Not Satisfiable',
    417 => 'Expectation Failed',
    500 => 'Internal Server Error',
    501 => 'Not Implemented',
    502 => 'Bad Gateway',
    503 => 'Service Unavailable',
    504 => 'Gateway Timeout',
    505 => 'HTTP Version Not Supported'
);

return (isset($codes[$status])) ? $codes[$status] : '';
}

function sendResponse($status = 200, $body = '', $content_type = 'text/html')
{
$status_header = 'HTTP/1.1 ' . $status . ' ' . getStatusCodeMessage($status);
header($status_header);
header('Content-type: ' . $content_type);
echo $body;
}

if (!empty($_FILES) && isset($_POST["name"])) {
            $name = $_POST["name"];
            $tmp_name = $_FILES['filename']['tmp_name'];
            $uploads_dir = '/var/www/cnet/photos';
            move_uploaded_file($tmp_name, "$uploads_dir/$name.jpg");
            $result = array("SUCCEEDED");
            sendResponse(200, json_encode($result));
            } else {

            sendResponse(400, 'Nope');
            }
?>

试试这段代码:

    NSData* sendData = [self.fileName.text dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *sendDictionary = [NSDictionary dictionaryWithObject:sendData forKey:@"name"];
    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:remoteUrl];
    NSMutableURLRequest *afRequest = [httpClient multipartFormRequestWithMethod:@"POST" 
                                                                           path:@"/photos" 
                                                                     parameters:sendDictionary 
                                                      constructingBodyWithBlock:^(id <AFMultipartFormData>formData) 
                                      {                                     
                                          [formData appendPartWithFileData:photoImageData 
                                                                      name:self.fileName.text 
                                                                  fileName:filePath 
                                                                  mimeType:@"image/jpeg"]; 
                                      }
                                      ];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
    [operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {

        NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);

    }];

    [operation setCompletionBlock:^{
        NSLog(@"%@", operation.responseString); //Gives a very scary warning
    }];

    [operation start]; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AFNetworking POST jpeg 上传 的相关文章

  • 直接在 XCode 中编译 Arm Assembly

    将arm汇编代码编译成xcode的最佳方法是什么 我有生成的那些程序集文件 有没有办法可以将 s 文件直接包含到我拥有的 C 代码中 或者我需要先运行一个预处理器 它将生成 o 文件 我可以将其与我的文件链接 如果是这样的话 在 XCode
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • UITableViewCell显示多种字体

    我想在 uitableviewcell 中以类似于 iPhone 地址簿的不同字体显示两个单词 例如 约翰Buchanan 您应该使用两个 UILable 或者您可以使用OH属性标签 https github com AliSoftware
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Objective-C 中发送给对象的消息可以被监听或者打印出来吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 中拦截方法调用 https stackoverflow com questions 1618474 intercept method call in objective c 如
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 如何在 UICollectionView 中将行居中?

    我有一个UICollectionView与随机细胞 有什么方法可以让我将行居中吗 默认情况下它是这样的 x x x x x x x x x x x x x x 这是所需的布局 x x x x x x x x x x x x 我必须做这样的事
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • Flutter iOS 构建在运行 pod install 时失败

    我正在尝试制作一个flutter插件 所以我按照提供的步骤创建了一个插件https flutter dev docs development packages and plugins developing packages 当我尝试运行 i
  • 根据环境配置基本URL

    假设我们有 Angular 4 应用程序 需要位于不同环境中的不同相对根 URL 中 即 http localhost 4200 index html为了发展 http prod server com angular app index h
  • HTML/CSS 内容始终居中

    如何使页面内容居中 使其在每种类型的屏幕尺寸上居中 例如 关于寓言式的如果我调整浏览器的大小 中心内容将向左移动 直到到达浏览器窗口 有一些背景元素可以水平无限延伸 顶部的深灰色 中间的浅灰色等 我可以在我的笔记本电脑和 iMac 上打开这
  • Android:软键盘不显示

    我在 MainActivity 布局中有 2 个 EditText 如果我正常运行应用程序 第一个 EditText 会获得焦点 但软键盘不会打开 但是当我使用这个时 public class TestingActivity extends
  • 关于gzip文件上seek的使用

    我有一个大gzip文件 我想使用仅读取其中的一部分seek 关于使用seek on gzip文件 这个page says seek 位置是相对于未压缩数据的 因此 调用者甚至不需要知道数据文件是否被压缩 这是否意味着seek必须从文件开头读
  • javascript 如何在不使用警报的情况下创建验证错误消息

    我希望制作一个简单的表单验证错误消息 显示在用户名字段下 我似乎无法弄清楚
  • 从 ReadableStream 对象检索数据?

    我怎样才能从a处获取信息ReadableStream object 我正在使用 Fetch API 但文档中没有明确说明这一点 尸体正在被归还ReadableStream我只想访问此流中的属性 在浏览器开发工具的 Response 下 我似
  • OSMDroid:当用户点击地图时添加标记

    我想在用户点击地图时在地图上显示一个标记 此外 这不应该影响双击进行缩放和 或移动Mapview 我正在使用 osmdroid android 4 0 jar 看看OSMBonusPack MapEventsOverlay MapEvent
  • 命名空间“clr-namespace:CefSharp.Wpf; assembly=CefSharp.Wpf”中不存在名称 ChromiumWebBrowser

    我已经遵循了这个link实现 CefSharp 应用程序 但我在编码时卡住了MainWindow xaml Blend for VS 2015 说 命名空间 clr namespace CefSharp Wpf assembly CefSh
  • 扩展 Object.prototype JavaScript

    我不是在问这是否可以 Object prototype method function 这被视为evil几乎每个人都考虑到它搞砸了for var i in obj 真正的问题 Ignoring 不合格的浏览器 不支持的浏览器Object d
  • 如何在装饰器中使用命名参数?

    如果我有以下功能 def intercept func do something here intercept arg1 20 def whatever arg1 arg2 do something here 我希望拦截仅在以下情况下启动a
  • 如何设置从浏览器下载的文件的名称?

    我正在编写一个 Web 应用程序 除其他外 它允许用户将文件上传到我的服务器 为了防止名称冲突并组织文件 我将它们放在服务器上后对其进行重命名 通过跟踪原始文件名 我可以与文件所有者进行通信 而他们却不知道我在后端更改了文件名 也就是说 直
  • 如何使用 jQuery 更改 CKEditor 文本?

    我有一个带有 CKEditor bbCode 插件 的文本区域
  • JBoss AS 7 的部署内容在哪里

    我是 JBoss AS 7 的新手 我尝试在 JBoss AS 7 上部署我的 war 文件 看起来工作正常 我的问题是在哪里可以看到部署的内容 我希望它像 Tomcat 一样 它应该有一个探索的 war 文件夹 用于保存部署的内容 JBo
  • 用于返回计算机上 .NET Framework 版本的 PowerShell 脚本?

    返回计算机上 NET Framework 版本的 PowerShell 脚本是什么 我的第一个猜测是涉及 WMI 的东西 还有更好的吗 它应该是一行 为每次 NET 安装 在每一行 仅返回最新版本 如果您要使用注册表 则必须递归才能获取 4
  • 带有绑定参数的 MarkupExtension

    我正在定制MarkupExtension其中我需要来自 XAML 的非字符串参数来构造新对象 是否可以在字段上使用非字符串参数绑定DataContext scope 换句话说 我怎样才能做这样的事情呢
  • What(): std::bad_alloc - 我内存不足了吗?

    我的数据集 960 个维度的 500 000 个点 文件大小为 1 9 GB 1 922 000 000 字节 该代码适用于较小的数据集 但为此它每次都会在同一点崩溃 这是一个最小的例子 include
  • 如何使用js或jquery在html中捕获屏幕截图[重复]

    这个问题在这里已经有答案了 我需要我的客户能够使用如下按钮捕获我网站任何页面的屏幕截图
  • Scikit-learn 多线程

    您知道 scikit learn 中的模型是否使用自动多线程或仅使用顺序指令吗 Thanks 不会 默认情况下 所有 scikit learn 估计器仅在单个线程上工作 但话又说回来 这一切都取决于算法和问题 如果算法需要顺序数据 我们就无
  • 使用 AFNetworking POST jpeg 上传

    我一生都无法弄清楚为什么当我使用 AFNetworking 时这不起作用 它与 ASIHTTP 一起工作 这对我来说都是很新鲜的 但我不明白为什么文件不再从 FILES 传输到服务器的硬盘 这是 iOS 代码 IBAction upload