从 iOS 设备上传图像到服务器

2023-12-29

我正在尝试在远程服务器上上传图像。如果我从谷歌下载手机上的图像并上传它们,例如http://www.mangauk.com/gallery/albums/album-11/lg/scooby.jpeg http://www.mangauk.com/gallery/albums/album-11/lg/scooby.jpeg它上传得很好。但是,如果我尝试上传用相机拍摄的图像,则不起作用。服务器只是挂起。

(IBAction)uploadImage {
    /*
     turning the image into a NSData object
     getting the image back out of the UIImageView
     setting the quality to 90
    */
    NSData *imageData = UIImageJPEGRepresentation(image.image, 90);
    // setting up the URL to post to
    NSString *urlString = @"http://iphone.zcentric.com/test-upload.php";

    // setting up the request object now
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];

    /*
     add some header info now
     we always need a boundary when we post a file
     also we need to set the content type

     You might want to generate a random boundary.. this is just the same 
     as my output from wireshark on a valid html post
    */
    NSString *boundary = [NSString stringWithString:@"---------------------------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:@"rn--%@rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
    [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name="userfile"; filename="ipodfile.jpg"rn"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-streamrnrn"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    // setting the body of the post to the reqeust
    [request setHTTPBody:body];

    // now lets make the connection to the web
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog(returnString);
}

和 php 脚本

$uploaddir = './uploads/';
$file = basename($_FILES['userfile']['name']);
$uploadfile = $uploaddir . $file;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo "http://iphone.zcentric.com/uploads/{$file}";
}

问题一定出在您的 php 脚本中,因为文件必须发送给它。

您应该在 php 中定义文件名,而不是信任原始文件名。

否则,有人可能会上传恶意 .php 文件,而您的脚本会很乐意上传该文件并将其命名为 .php,然后他们就可以接管您的服务器。

你应该做这样的事情:

$uploaddir = './uploads/';
$file = $uploaddir . 'filename_chosen_by_you.jpg';

这也可能会解决 jpg / jpeg 问题,因为您正在进行命名。

另一件事 - 您也在执行同​​步请求 - 这意味着您的应用程序将在执行请求时等待并冻结(如果它是一个大文件,可能需要几秒钟),看看执行异步请求。这意味着它将在后台上传图像,然后在完成后调用一个函数,这样您就可以告诉用户一切都已上传完毕。

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

从 iOS 设备上传图像到服务器 的相关文章

  • DatePicker 停止 CoreData 按预期工作

    我有一个应用程序 它保存 UIDatePicker 中的文本和日期 然后在您回到 UIDatePicker 中的该日期时显示该注释 效果很好 只有我发现将 UIDatePicker 日期设置为今天会停止 CoreData 工作 只有当我运行
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图
  • ios7 navigationController PushViewController 动画错误

    看来我在 navigationController PushViewController 方法中发现了一个错误 为了重新创建它 我采用了示例主详细信息项目并对 didSelectRow method void tableView UITab
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • 从 iOS 应用程序内的 Junos Pulse 获取用户凭据

    我正在通过 Junos Pulse 在 iPad 中建立 VPN 连接 以进入我组织的 Intranet 谁能告诉我是否有任何 iOS api 或 SDK 可用于获取在 iOS 应用程序内的 Junos pulse 中输入的用户凭据 Jun
  • UIDocumentInteractionController 阻止“打开方式”表中的空投

    在我的应用程序中 我允许用户通过 Instagram 分享照片 这需要使用 UIDocumentInteractionController 如果手机支持 则会自动检测空投 如何将其从 打开方式 操作表中删除 即使我使用 UIActivity
  • 自定义 UITableViewCell 选择样式?

    当我点击我的UITableViewCell 当我单击单元格时 背景部分 我的背景图像未覆盖的区域 会变成蓝色 另外 所有的UILabel单击时单元格上的 s 变为白色 这就是我想要的 然而 我不想要的是当我点击它时的蓝色背景 但如果我这样做
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • 指定访问组时出现 KeychainItemWrapper 错误

    相当长一段时间以来 我一直在使用 KeychainItemWrapper 的 ARC 版本成功读取和写入私有钥匙串项目 我现在正在努力将我的 iOS 应用程序转换为使用共享访问组 以便我的 2 个共享相同应用程序前缀的应用程序可以访问钥匙串
  • 使用基于约束的布局自动调整 NSTokenField 的大小

    有没有办法自动调整大小height使用约束的 NSTokenField 保持宽度恒定 sizeToFit应该有效 但事实并非如此 如果我设置一个约束来保持宽度不变并调用此方法 它将忽略约束并仅调整宽度大小 当我想要的是仅调整高度大小时 基于
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController

随机推荐

  • 在 android 3.x 中使用 android-browser 打开本地 html-file

    对于 android 2 x 我可以使用该解决方案 browserIntent setClassName com android browser com android browser BrowserActivity 帖子中已解决 使用An
  • 将 Informix 游标转换为 MSSQL 游标

    我在 Informix 数据库中有一个游标 它是函数的一部分 我想将其转换为 MS SQL 中的游标 下面是代码 DECLARE select distinct agentname agentloginid from selected ag
  • 在 Javascript 中按大写字母分割

    我正在尝试使用 Javascript 按大写字母拆分字符串 我正在尝试做的事情的例子 HiMyNameIsBob gt Hi My Name Is Bob GreetingsFriends gt Greetings Friends 我知道s
  • 子视图控制器如何使用Parentviewcontroller中定义的方法

    我遇到的情况是 子视图控制器尝试显示多个视图控制器 并且在执行该操作时 子视图控制器需要从父视图控制器访问播放暂停操作方法 如何实现这一点 子视图控制器可以使用在父视图控制器中定义的播放暂停操作方法 该方法用于暂停音频播放器 暂停计时器和暂
  • 访问另一个项目的设置文件

    有没有办法从不同的项目访问设置文件 例如 我有一个包含 2 个项目的解决方案 我们称它们为 Proj1 和 Proj2 我想从 Proj1 中的 Program cs 访问 Proj2 的应用程序设置 这可能吗 如果您使用 C 答案是 非常
  • 无法加载资源:服务器响应状态为 503(服务不可用) favicon.ico

    我正在尝试通过 Heroku 部署我的 Node JS 站点 但不断收到此错误 无法加载资源 服务器响应状态为 503 服务不可用 favicon ico 我四处搜索并认为我应该添加以下内容到我的标题 但是我仍然收到此错误 有任何想法吗 这
  • Django-allauth:注册时发送欢迎电子邮件(无需验证)

    如何向注册 django 应用程序 使用 django allauth 的用户发送欢迎电子邮件 如果我设置ACCOUNT EMAIL VERIFICATION mandatory 它工作正常 用户会收到一封验证电子邮件 但由于我不需要任何电
  • 制作动画时,如何仅在所有元素完成时才触发回调?

    在 jQuery 中制作动画时 仅当所有元素完成动画而不是每个元素时才触发回调的最佳实践是什么 例如 someElements fadeOut fast function dont do this until ALL elements ar
  • 为什么 std::is_rvalue_reference 不做它所宣传的事情?

    例如 如果我有 include
  • Laravel 数组验证

    我有这样的要求 GET http example com test q 1 q 2 q 3 我有这条路线 Route get test function Request req req gt validate q gt array 我应该如
  • SQL查询不显示第一个结果?

    我正在尝试在我的 php 页面中动态创建导航菜单 我有一个查询来创建活动页面列表 但由于某种原因 第一个结果从未显示 menu mysql query SELECT link FROM myTable WHERE active page y
  • webpack模块解析失败意外字符'@'

    我正在使用 vue cli 在 main js 中导入 css 文件后 import Vue from vue import App from App vue import element ui lib theme default inde
  • iOS 推送通知类型选项?警报与横幅?

    我读过这里的帖子 建议让推送通知显示为警报而不是横幅的唯一方法是单个最终用户更改Alert Style in the Notifications应用程序的部分Settings 让我困惑的是 有些应用程序默认为Alerts风格 而不必这样做
  • 正则表达式的意外匹配

    我期望正则表达式模式ab 2 c仅匹配a后跟 0 1 或 2bs 随后是c 许多语言都以这种方式工作 例如 Python 然而 在 R 中 grepl ab 2 c c ac abc abbc abbbc abbbbc 1 TRUE TRU
  • 使用数据注释将字段标记为“只读”

    我正在努力使ID字段只读 它是数据库中的一个身份字段 因此用户不会设置它 不过 他们还是愿意看到 当分配给一个时 我缺少什么如下DataForm仍然允许编辑该值 public class StatusChoice BindableBase
  • 使用 Selenium 保存整页内容

    我想知道保存 Selenium 访问站点时检索到的所有文件的最佳方法是什么 换句话说 当 Selenium 访问时http www google com http www google com我想保存 HTML JavaScript 包括
  • 如何在windows中通过命令提示符方式设置文件权限?

    如何通过命令提示符方式在windows中设置相同的文件权限 gt attrib Displays or changes file attributes ATTRIB R R A A S S H H drive path filename S
  • 处理器架构不匹配构建错误

    在尝试运行测试应用程序时 我收到以下错误两次 正在构建的项目 MSIL 的处理器架构与参考 C Windows Microsoft NET Framework v4 0 30319 mscorlib dll x86 的处理器架构之间存在不匹
  • 如何在 google-app-engine 中使用内置的 django templatetags

    我正在尝试在内置模板标签中使用 Django 例如标记和 在我的谷歌应用程序中人性化 但它不起作用 我在 INSTALLED APPS 中添加了标记和人性化 还是行不通 如何使用它 这是人性化的方法 其他应该类似 在调用模板的控制器末尾有一
  • 从 iOS 设备上传图像到服务器

    我正在尝试在远程服务器上上传图像 如果我从谷歌下载手机上的图像并上传它们 例如http www mangauk com gallery albums album 11 lg scooby jpeg http www mangauk com