iphone - 图片没有上传到网络服务

标签 iphone ios ipad

我想上传一张图片到网络服务,但是当我上传它时,只保存了图片的名称,而不是图片。

请找到代码和图片以供引用。

    - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissModalViewControllerAnimated:YES];

    NSData *image = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 0.1);

    NSMutableString *urlString = [[NSMutableString alloc] initWithFormat:@"name=thefile&&filename=recording"];
    [urlString appendFormat:@"%@", image];
    NSData *postData = [urlString dataUsingEncoding:NSASCIIStringEncoding
                               allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    NSString *baseurl = @"http://192.168.2.34/Service1.svc/upload/filename.png";

    NSURL *url = [NSURL URLWithString:baseurl];
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
    [urlRequest setHTTPMethod: @"POST"];
    [urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/x-www-form-urlencoded"
      forHTTPHeaderField:@"Content-Type"];
    [urlRequest setHTTPBody:postData];

    NSURLConnection *connection = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
    [connection start];

    NSLog(@"Started!");

}

上传图片后,图片名称显示如下:

enter image description here

但是当我打开图像时显示为 nil。

enter image description here

我不确定出了什么问题..请帮助我。

提前致谢。

最佳答案

这些行是错误的:

NSData *image = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 0.1);
NSMutableString *urlString = [[NSMutableString alloc] initWithFormat:@"name=thefile&&filename=recording"];
[urlString appendFormat:@"%@", image];
NSData *postData = [urlString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
...
[urlRequest setValue:@"application/x-www-form-urlencoded"
  forHTTPHeaderField:@"Content-Type"];
[urlRequest setHTTPBody:postData];

替换为:

NSData *image = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 0.1);
...
[urlRequest setHTTPBody:image];

此外,您可能应该将 0.1 更改为 0.8 或其他值,否则质量会很差。

您还需要确保服务器正确读取数据。这取决于您在服务器端使用什么...在 PHP 中,您是这样做的:

$data = file_get_contents('php://input');
file_put_contents($data, 'filename.jpg');

关于iphone - 图片没有上传到网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592009/

相关文章:

iOS - 转到带有 if 条件的页面

ios - 如何从 native ios View 弹出回 flutter View ?

ios - 从 iPad 应用程序发送 HTML 电子邮件

iOS 模拟器 - 在 iOS 8.0 而不是 iOS 8.1 上测试

iphone - 使用NSScanner查找短语的下一个匹配项

iphone - 条码技术——智能手机应用程序

ios - ios 7中的UINavigationbar后退按钮

iOS 时间 View

ios - UIButton 中的 Swift 3D Touch Force Value

android - 如何解决 android 和 ios 跨平台开发的#define 问题?