将图像上传到网络服务会导致图像损坏

2024-02-03

我正在尝试从 iPhone 将图像上传到网络服务,但即使文件已成功上传,也无法查看 jpg,它似乎已损坏。

使用以下 c# 代码可以成功上传文件并正常工作:

var url = http://myurl.co.uk/services/service.svc/UploadImage?id=108&ext=png;

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "POST";
req.ContentType = "image/jpeg";

using (var reqStream = req.GetRequestStream())
{
    var bytes = File.ReadAllBytes("C:\\Users\\Chris\\Pictures\\default.png”);
    reqStream.Write(bytes, 0, bytes.Length);
}
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

Console.WriteLine("HTTP/{0} {1} {2}", resp.ProtocolVersion, (int)resp.StatusCode, resp.StatusDescription);

然而,这是我在 iOS 上尝试的代码,该代码使文件无法查看:

获取图像

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    // Resize the image from the camera
    UIImage *scaledImage = [image resizedImageWithContentMode:UIViewContentModeScaleAspectFill bounds:CGSizeMake(_photo.frame.size.width/2, _photo.frame.size.height/2) interpolationQuality:kCGInterpolationHigh];
    // Crop the image to a square (yikes, fancy!)
    UIImage *croppedImage = [scaledImage croppedImage:CGRectMake((scaledImage.size.width -_photo.frame.size.width)/2, (scaledImage.size.height -_photo.frame.size.height)/2, _photo.frame.size.width, _photo.frame.size.height)];
    // Show the photo on the screen
    _photo.image = croppedImage;

    NSData *imgData=UIImageJPEGRepresentation(croppedImage,1);
    NSLog(@"Original size:%d",[imgData length]);
    NSData *smallerImage=UIImageJPEGRepresentation(croppedImage, 0.5);
    NSLog(@"End size:%d",[smallerImage length]);
    imageData = imgData;

    NSString *imageName = @"tempImage.jpg";
    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES);
    NSString * documentsDirectoryPath = [paths objectAtIndex:0];

    NSString *dataPath = [documentsDirectoryPath  stringByAppendingPathComponent:imageName];
    NSData* settingsData = UIImageJPEGRepresentation(croppedImage, 0.5);

    [settingsData writeToFile:dataPath atomically:YES];

    [picker dismissModalViewControllerAnimated:YES];
}

上传图片:

-(void)uploadImageForOfferID:(NSString *)offerID imageExtention:(NSString *)extension withCompletionBlock:(void(^)(NSError *error))block
{
    NSString *imageName = @"tempImage.jpg";
    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES);
    NSString * documentsDirectoryPath = [paths objectAtIndex:0];

    NSString *dataPath = [documentsDirectoryPath  stringByAppendingPathComponent:imageName];
    NSData* imageData = [NSData dataWithContentsOfFile:dataPath];

    AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:masterURL]];

    NSString *url = [NSString stringWithFormat:@"UploadImage?id=%@&ext=%@", offerID, extension];
    NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData:imageData name:@"photo" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
    }];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
        NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
    }];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Complete");
        block(nil);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Failed");
        NSLog(@"FAILED WITH STATUS CODE %d - error description: %@", operation.response.statusCode, error.description);
        block(error);
    }];
    [operation start];
}

此方法首先将图像保存到文件,然后上传。我也尝试只上传数据NSData *smallerImage=UIImageJPEGRepresentation(croppedImage, 0.5);但结果相同。

我在上传时错过了一些东西吗?

Thanks

编辑 - -

比较模拟器中的文件和上传的文件。模拟器文件是2,538 bytes (4 KB on disk)并且上传的文件稍大一些2,698 bytes (4 KB on disk)原始模拟器图像显示缩略图,但上传的图像没有! 上传的图像可以使用 Photoshop 打开,但不能使用 Safari 或 Chrome 打开。


是否与您发送带有类型的图像有关image/jpeg当您在提供的代码中指向的文件实际上是.png文件并且应该使用image/png?

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

将图像上传到网络服务会导致图像损坏 的相关文章

  • 如何更改 UILabel/UIFont 的字母间距?

    我已经搜索了很多 但找不到答案 我有一个普通的 UILabel 定义如下 UILabel totalColors UILabel alloc initWithFrame CGRectMake 5 7 120 69 autorelease t
  • iOS Swift 3 以编程方式将文件复制到 iCloud Drive

    在我的我有文档下载选项 当用户从我的应用程序下载文档时 我需要将其存储到已安装在用户手机中的用户 iCloud Drive 我已在 Web 和 Xcode 中配置了 iCloud 但问题是我无法将文件正确复制到 iCloud Drive 文
  • Phonegap 不显示警报

    为什么phonegap不显示警报通知 运行于 iPhone 5 1 1 phonegap Phonegap 2 1 0 0 g26d211b 山狮 10 8 2 xcode 4 4 1
  • 应用程序进入后台时 AVPlayer 暂停和播放问题

    如果应用程序变得不活动 活动 当出现某些警报或双击主页按钮时 它可以正常工作 AVPlayer player void applicationWillResignActive UIApplication application player
  • 如何从 iOS 本机共享功能中删除某些选项? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一款 iOS 游戏 想知道如何删除 iOS 在自动共享时提供的一些本机选项 例如 分配给联系人 和 打印 我对此做了很多研究 我
  • 我可以提高当前模态视图控制器的动画速度吗?

    我正在编写一个绘图应用程序 当用户单击工具栏中的项目时 该应用程序会显示工具视图控制器 然而 我的几位 Beta 测试人员报告说 工具面板打开速度太慢 我使用标准的 presentModalViewController animated 调
  • Firebase 查询 - 查找包含字符串的子项

    我在使用 Firebase 查询时遇到了一些问题 我想查询对象 其中对象子值包含特定字符串 到目前为止 我有一些看起来像这样的东西 Firebase ref Firebase alloc initWithUrl https dinosaur
  • 我应该在哪里保存想要长期保留的数据和文件,以及如何防止 iCloud 备份它们

    我有任意类型的文件 包括核心数据存储库 我需要保留这些文件 并且不要让 iOS 删除它们 通常 我不希望 iCloud 备份这些文件 我应该把它们保存在哪里 iOS5 0 及更早版本 5 0 1 和 5 1 及更高版本中保存文件的本地更改主
  • 使用 AVVideoCompositionCoreAnimationTool 在 CALayer 中将视频与静态图像混合

    我正在尝试将来自相机的视频与静态图像 水印 混合 我已经检查了这里的问题 答案和一些示例 包括来自 Apple 的 WWDC AVEditDemo 并以以下代码结束 不幸的是 导出的视频不包含带有图像的图层 有任何想法吗 void imag
  • Xcode - 重命名项目会导致问题

    我目前正在开发 iPhone 应用程序 我从在互联网上找到的项目模板开始研究这个问题 现在我想重命名这个项目 我已经成功重命名了实际的项目文件 文件夹和可执行文件以及其他一些东西 但有一个奇怪的问题 如果我尝试在 iPhone 设备上运行该
  • 如何在代码中的UIToolBar中添加UIBarButtonItem

    我有标准 UIBarButtonItem UIBarButtonItem share UIBarButtonItem alloc initWithBarButtonSystemItem UIBarButtonSystemItemAction
  • iPhone 录音时不振动

    我正在修改 AurioTouch 示例 我想振动手机以响应特定的声音输入 我可以检测输入并printf他们 但是AudioServicesPlaySystemSound kSystemSoundID Vibrate 会话期间不执行任何操作k
  • initWithFrame 与 initWithStyle

    我想从已弃用的 TableView 中更新initWithFrame reuseIdentifier 我的表格视图使用自定义单元格 到处都说要使用initWithStyle 并且它不会以任何方式改变行为或细胞initWithFrame CG
  • 带有 HTML 的 UIActivityViewController

    当我将包含 HTML 内容的字符串作为数组元素传递给UIActivityViewController initWithActivityItems方法中 它不会在选定的 共享 控制器中将其呈现为 HTML 而是呈现 HTML 源 即标记而不是
  • 使用 Xcode 资产目录缓存 UIImage

    我们都知道UIImage神秘的幕后缓存机制imageNamed 方法 在苹果的UIImage 类参考 https developer apple com library IOS documentation UIKit Reference U
  • MVVM 在 iOS 中的使用

    我是一名 iOS 开发人员 我对我的项目中存在大量视图控制器感到内疚 因此我一直在寻找更好的方法来构建我的项目 并遇到了 MVVM 模型 视图 视图模型 架构 我读了很多关于 iOS 的 MVVM 文章 但有几个问题 我将用一个例子来解释我
  • iOS 框架问题:类在两者中均实现

    我正在开发一个使用第三方框架类的iOS框架项目 所以我在下面添加了第三方框架链接的框架和库部分 当我在 iOS 应用程序项目中添加自定义框架时 每个类都会收到此警告 objc 3139 类 class name 在两者中均实现 privat
  • 将 Unmanaged 与 nil 进行比较

    代码是从这篇博客文章复制的 http matthewpalmer net blog 2014 06 21 example ios keychain swift save query http matthewpalmer net blog 2
  • Measure 应用程序是否有可用的 URL 方案?

    我想推出新的测量应用程序 在 iOS 12 上 在我的应用程序中 这可能吗 应用程序是否有可用的 URL 方案可用于此目的 或者还有其他方法可以做到吗 Thanks 您似乎无法打开此应用程序 In the 文档存档 https develo
  • 在 Objective C 中读取解析 XML 的 CDATA 部分

    我正在研究一个关于解析 google 天气 api 的 iphone 示例教程 该 api 似乎不再存在 所以我找到了一个替代方案 本教程使用 libxml2 和 xpath 查询来解析 xml 文件 我成功解析了大部分数据 我遇到的问题是

随机推荐

  • Python 的多个构造函数

    我有一个 A 类 可以通过两种不同的方式生成 a A xml 文件路径 a A 列表 列表 第一个方法以文件路径作为输入 从 XML 文件解析以获取 listA 和 listB 第二种方法给出了两个列表 我可以想到两种方法来实现多个构造函数
  • 虚函数可以被非虚函数覆盖吗?

    在此代码中 class Base public virtual void method 0 class Derived1 public Base public virtual void method override class Deriv
  • 从顶部滑动抽屉

    我试图让一个滑动抽屉在我的应用程序中从顶部拉下 但我无法找到一种方法来做到这一点 有什么帮助吗 内置的滑动抽屉不是那么灵活 你最好的选择是扩展它并修改它的行为 或者看看这个http code google com p android mis
  • Git 软件(例如 Gitbox、Github、SourceTree)可以使用远程存储库而不是本地存储库吗?

    我喜欢使用 Git 软件来推送提交 但我使用的软件 Gitbox Github SourceTree 在向其添加新存储库时都要求本地存储库 问题是 我的存储库位于我的开发服务器上 而不是我的本地计算机上 那么 Git 软件是否可以使用远程
  • Nodejs Express 4 Multer | Nodejs Express 4 Multer如果用户未授权则停止文件上传

    我在用着multer作为 Express 4 的多部分中间件 Express 配置为使用护照作为身份验证中间件 但如果用户未经身份验证 我找不到阻止文件上传的方法 我想使用 onFileUploadStart 来拒绝该文件 但我找不到与 请
  • 禁用链接和 上的浏览​​器工具提示

    当用户将鼠标悬停在某些链接和元素上时 我想抑制网络浏览器的默认工具提示显示 我知道这是可能的 但我不知道如何实现 有人可以帮忙吗 这样做的原因是抑制微格式日期时间的工具提示 BBC 放弃了对 hCalendar 的支持 因为机器可读日期的外
  • 您可以隐藏 QGroupBox 框架但保留其内容可见吗?

    我有一个QGroupBox 根据上下文 它的标题可能是多余的 显示在 GUI 的另一个位置 所以我需要将QGroupBox不在这里 但我必须保留它的内容可见 所以我不想打电话QGroupBox hide 我需要在运行时动态执行此操作 并希望
  • 如何使 Groovy 方法真正受到保护

    尝试在groovy中创建一个方法protected package com foo class Foo protected def getSomething 这不起作用 因为默认情况下 groovy 几乎使所有内容都可见 所以我尝试使用 P
  • HTML 按钮 - 按住按钮时它将重复该操作

    我是 HTML 新手 我正在开发一个项目 该项目需要使用一个按钮 当您按住它时 它会重复相同的操作 这是我到目前为止得到的代码 但没有起作用 DOCTYPE html gt
  • 三个值的异或

    进行三向异或的最简单方法是什么 换句话说 我有三个值 并且我想要一个仅计算为 true IFF 的语句one三个值中的一个为真 到目前为止 这就是我想出的 a b a c b c b a b c a c c a c b a b 有没有更简单
  • 使用 MongoDB C# 驱动程序查询构建器获取项目计数

    使用 MongoDB 的 C 驱动程序 我可以轻松构建一个查询 然后可以添加 SetSkip 和 SetLimit 参数以将结果集限制为特定大小 不过 我希望能够在应用 Skip 和 Take 之前知道查询的项目数是多少without执行查
  • 如何将 pandas 数据框转换为嵌套字典

    我正在运行 Python 3 6 和 Pandas 0 19 2 并且有一个 DataFrame 如下所示 Name Chain Food Healthy George McDonalds burger False George KFC c
  • 用一个最深的循环限制递归,并为所有元素分配精确的 id

    需要从混合顺序中对元素进行排序 排序是使用递归方法完成的 代码中未实现 while 必须满足两个条件 递归应该只捕获最长的链 其他链不应输出 一个元素与STATUS 0 逻辑上 链中的第一个元素 不应显示 but its id 3值必须分配
  • 如何将 JIRA 与 Selenium WebDriver 集成?

    如何将 JIRA 与 Selenium WebDriver 集成 实际上我想执行测试用例并报告 JIRA 中每个测试用例的通过 失败状态 你的问题很笼统 我的回答也很笼统 Jira 并不完全是一个 TCM 测试用例管理器 应用程序 尽管它肯
  • 如何使用 MongoDB 搜索文档中所有字段的单词或字符串?

    我们遇到的情况是 用户希望有一个 多功能框 来搜索文档中任何位置的单词 短语 MongoDB 是否能够执行此搜索 还是必须对每个字段进行显式搜索 你需要创建一个通配符文本索引 https docs mongodb org manual co
  • 相当于 PowerShell 中的 Bash 别名

    PowerShell 新手问题 我想在 PowerShell 中创建一个与此 Bash 别名完全相同的别名 alias django admin jy jython path to jython dev dist bin django ad
  • 使用一个字段创建 Ada 记录

    我定义了一个类型 type Foo is record bar Positive end record 我想创建一个返回记录实例的函数 function get foo return Foo is return 1 end get foo
  • 当为自动模拟设置自定义 AutoDataAttribute 时,告诉 AutoFixture 忽略所有递归结构的正确语法是什么?

    我让 xUnit Moq AutoFixture 成功地协同工作 以便我可以通过测试方法输入参数自动模拟对象 我创建了一个自定义 AutoMoqData 我在每次测试中使用的属性 这是该属性的代码 using System Linq usi
  • Android 谷歌加号登录按钮

    下列的谷歌签名按钮 https developers google com mobile android sign in 我在我的android设备上实现了它 单击该按钮时 它会显示一个弹出窗口 询问您的许可 了解您在 Google 上的身
  • 将图像上传到网络服务会导致图像损坏

    我正在尝试从 iPhone 将图像上传到网络服务 但即使文件已成功上传 也无法查看 jpg 它似乎已损坏 使用以下 c 代码可以成功上传文件并正常工作 var url http myurl co uk services service sv