2016-04-16 18 views
1

die Bilder php Ich versuche, von meinem Iphone Galerie zu laden sind alle gespeichert als ipodfile.jpgHochladen von Bildern ios mit

ich den genauen Bildnamen wollen, die ich von der Galerie bin Auswahl und ich möchte einen Ordner erstellen (mit den Login-Benutzername) und ich möchte in dem Ordner

Für

Beispiel speichern
  • Benutzername: Mike
  • Image: welcome.jpg
  • 012.351.

Dann möchte ich einen Ordner mit dem Namen mike erstellen und das Bild darin speichern.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 

    [self dismissModalViewControllerAnimated:true]; 

    img = [info valueForKey:UIImagePickerControllerOriginalImage]; 
    //images.image = img; 
    NSData *imageData = UIImageJPEGRepresentation(img, 90); 
    NSString *urlString = @"http://192.168.1.92/Abdul/IOS/Chat/upload_file.php"; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

    NSString *boundary = @"---------------------------14737809831466499882746641449" 
    ; 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"ipodfile.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"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]]; 
    [request setHTTPBody:body]; 

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 
    NSLog(@"Successfully uploaded"); 

} 

Dies ist die serverseitige Code, den ich

<?php 
$oname=$_FILES["file"]["name"]; 
$tempname=$_FILES["file"]["tmp_name"]; 
$path="upload"; 

echo "Upload: " . $oname . "<br />"; 
echo "Temp file: " . $tempname . "<br />"; 


echo "<br>"; 
$ex=file_exists("upload/$oname"); 

if($ex) 
{ 
    echo "File Already exist"; 
} 
else 
{ 
    $upload=move_uploaded_file($tempname,$path.$oname); 

    if($upload) 
    { 
     echo "Sucessfully Stored in: " . $path. $oname; 
    } 
    else 
    { 
    echo "Not stored Sucessfully : " . $path.$oname; 
    } 
} 
+0

dein problem isphp seite ya ios seite sag mir das? – iOS

+0

In ios code gibt es eine Zeile filename = \ "ipodfile.jpg \" Wie ändere ich den Dateinamen was ich aus der Bildergalerie auswähle – VyTcdc

+0

Ihr Bild ist standardmäßig save ipodfile.jpg? – iOS

Antwort

1

Sie sollten für jedes Bild einen eindeutigen Dateinamen wie einen Zeitstempel verwenden, der immer eindeutig ist.

In der unteren Zeile stellen Sie den Bildnamen ein, also stellen Sie ihn mit dem Zeitstempel ein.

[body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"ipodfile.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 

Sie eindeutigen Namen kepp kann wie folgt aomething, die ich einmal verwendet haben,

  NSDate *currentDate = [[NSDate alloc] init]; 
      NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
      [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; 
      NSString *localDateString = [dateFormatter stringFromDate:currentDate]; 
      NSString* cleanedString = [[localDateString stringByReplacingOccurrencesOfString:@"." withString:@""]stringByReplacingOccurrencesOfString:@":" withString:@""]; 
      NSString *cleanedString2 = [cleanedString stringByAppendingFormat:@"%d",i]; 
      NSString *finalUniqueImageNAme = [cleanedString2 stringByAppendingString:@".jpg"]; 

Hope this helfen;)

Update:

können Sie eindeutigen Namen verwenden, wie dies,

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\n",finalUniqueImageNAme] dataUsingEncoding:NSUTF8StringEncoding]]; 

Und die zweite Sache, die Sie verwenden sollten AFNetworking, um diese Art von Sachen zu tun. es wird alles diese Art von Sachen wie Satzgrenze usw. Click here for AFNetworking github

Update 2 (nach Abfrage von Kommentaren) verwalten:

Sie NSURLSession statt nsurlconnection weil Verbindung jetzt Ihr Code sein ist veraltet verwenden sollte, so sollte wie das

NSURLSession *session = [NSURLSession sharedSession]; 


[[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 

    if (data) { 

     //if response is in string format 
     NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 

     //if response in json format then 
     id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

    } 



}]resume]; 
+0

Ich werde Ihren Code überprüfen und Sie wissen lassen – VyTcdc

+0

Wie Sie den uniquename-Code in der folgenden Zeile implementieren [body appendData: [@ "Content-Disposition: form-data; name = \" datei \ "; filename = \" ipodfile. jpg \ "\ r \ n" dataUsingEncoding: NSUTF8StringEncoding]]; – VyTcdc

+0

Danke, ich werde überprüfen, – VyTcdc

0

ändert den Pfad zu

$path="mike/"; und dann Bild hochladen verwenden. Auf diese Weise wird Ihr Bild in den mike-Ordner hochgeladen.

NSData *imageData = UIImagePNGRepresentation(yourImage); 

    NSString *urlString = [ NSString stringWithFormat:@"http://192.168.1.92/Abdul/IOS/Chat/upload_file.php"]; 

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

    NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [[body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\n",img] 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]]; 
    [request setHTTPBody:body]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
+0

Ich habe ein Ordner-Mikrofon in PHP-Server erstellt und versucht, aber es speichert außerhalb des Ordners nicht im Ordner Mike. – VyTcdc

+0

[body appendData: [[NSString stringWithString: [NSString stringWithFormat: @ "Inhalt-Disposition: form-data; Name = \" mike \ "; Dateiname = \"% @ \ "\ r \ n", 1]] dataUsingEncoding : NSUTF8StringEncoding]]; – iOS

+0

Änderung php Seite Pfadnamen – iOS

Verwandte Themen