【问题标题】:Trying to upload image from my iOS app to server尝试将图像从我的 iOS 应用程序上传到服务器
【发布时间】:2013-12-20 19:03:48
【问题描述】:

我有以下问题 - 我正在尝试从我的 iOS 应用程序将图像上传到服务器,但我不知道该怎么做。该站点上有一个 HTML 表单,其中包含用于浏览图像的按钮。在我的应用程序中,我从图库中选择了一张照片,然后尝试上传它,但没有任何反应。我使用此代码使事情正常进行,但没有积极的结果:

-(IBAction)postImage:(id)sender
{
    NSData *imageData = UIImageJPEGRepresentation(savedImage, 90);

// setting up the URL to post to
NSString *urlString = @"http://pik.bg/news/edit_news/124317";

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


NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[requestUpload 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:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"Filedata\" filename=\"IMG_0056.JPG\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[@"Content-Type: image/jpeg\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
[requestUpload setHTTPBody:body];

// now lets make the connection to the web



 NSData *returnData = [NSURLConnection sendSynchronousRequest:requestUpload returningResponse:nil error:nil];

    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog (@"%@", returnString);
    }

我做错了什么,但不知道到底是什么。有任何想法吗?哦,如果这很重要的话,HTML 表单有一个名为“submit”的 SUBMIT 按钮。

【问题讨论】:

    标签: php ios image upload


    【解决方案1】:

    好的,这应该是你的解决方案。

    在您的服务器中,您应该有一个具有不同参数的脚本,其中包括一个文件夹名称。 导航到正确的文件夹,并创建此文件夹(例如 images/)。之后,您从应用程序发送的图像将保存在此文件夹中。

    这是我使用这种方法时遇到的问题。

    【讨论】:

    • 好的,我来看看PHP代码。还有一个问题:[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"Filedata\" filename=\"IMG_0056.JPG\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]] ;我将设置什么文件名或它必须是我从图库中选择的当前图像的名称是否重要?因为我不知道如何查看我当前的图像名称。
    • 为此,您可以执行以下操作: NSString *stringData = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"filedata\"; filename=\%@.jpg\ r\n",self.textField.text];
    • 为什么我需要这个 textField !?我想知道这个文件名是我当前图片的名称还是只是某个名称?
    • 不,绝对不是,这意味着您的文件名将在您的服务器中有一个名称(假设您的应用程序中有一个文本字段)textfield.jpg
    • 你能告诉我你在这个网址上有什么吗? pik.bg/news/edit_news/124317
    【解决方案2】:
    NSString *urlString = @"http://........./";
    
    
        NSURL *url = [NSURL URLWithString: urlString];
    
        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    
        [request setUseKeychainPersistence:YES];
    
        UIImage * image = [[UIImage imageNamed:@"good_girl.jpg"] autorelease];
        NSData *imageData = UIImageJPEGRepresentation(image, 90);
        [request setPostBody:imageData];
        [request setDelegate:self];
        [request setDidFinishSelector:@selector(uploadRequestFinished:)];
        [request setDidFailSelector:@selector(uploadRequestFailed:)];
        [request startAsynchronous];
    

    【讨论】:

    • 问题是我必须按照我尝试的方式去做。没有其他框架、库等。
    【解决方案3】:

    请告诉我您正在尝试仅上传图片名称或图片路径? 那是 imageg1.png 还是 UIImage 对象? 实际上我没有权限对问题发表评论,所以我在答案空间中提出了这个问题。

    【讨论】:

    • 我知道。但是我们希望 50 声望对任何问题发表评论。忽略这个。
    • 我正在使用 UIImage。我这样做是这样的: UIImage *savedImage; savedImage = [[UIImage alloc] init]; savedImage = info[UIImagePickerControllerOriginalImage];从图库中挑选一张图片。
    猜你喜欢
    • 2013-09-07
    • 2016-09-21
    • 2015-01-28
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多