10

I found few snippet from online to upload image from iphone to the server folder, it's showing to use server side scripting eg. use php at server side

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

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo "Uploaded!";
}else{
   echo "Not Uploaded!";
}
/>

is it any possibilites to upload image directly to the server folder without the above code,

let say I want to upload into http://111.22.333.44/mysite/pics/ w/o any server side scripting, if can how this can be done

Cœur
  • 37,241
  • 25
  • 195
  • 267
Apache
  • 1,796
  • 9
  • 50
  • 72

2 Answers2

18
/*
  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:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
 [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
 [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\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
 [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);

this code will be helpful for you....

J-16 SDiZ
  • 26,473
  • 4
  • 65
  • 84
parvind
  • 877
  • 10
  • 22
  • I had to remove the line with application/octet-stream to get it to work with attachment_fu. Any ideas why? – James Testa Apr 23 '11 at 14:09
  • It was great code. Worked for me at first time. Thanks parvind :) – Prerna Jul 28 '11 at 11:50
  • Be aware of the size of the uploaded file. You're creating the request with content of whole file in memory and then sending it...if the file is too big (or you are uploading many files concurrently) you probably face memory consumption problems – JakubKnejzlik Jul 23 '14 at 03:08
0

If you setup your webserver to allow the PUT method you could do this. 99% of web servers only allow the GET and POST methods.

Having never done that, I can't give you much help. Here is a page that I got from google talking about it:

http://www.w3.org/QA/2008/10/understanding-http-put.html

Jay
  • 320
  • 2
  • 7