Изображения, которые я пытаюсь загрузить из моей галереи Iphone, сохраняются как ipodfile.jpg
Я хочу точное название изображения, которое я выбираю из галереи
и я хочу создать папку (с именем пользователя логина), и я хочу хранить внутри папки
Например
Затем я хочу создать папку с именем mike
и сохранить изображение внутри.
- (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");
}
Это код на стороне сервера, который я использую
<?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;
}
}
Вы должны взять уникальное имя файла для каждого изображения, например, отметку времени, которая всегда будет уникальной.
в нижней строке вы устанавливаете имя изображения, поэтому установите его с отметкой времени.
[body appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"ipodfile.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
Вы можете сохранить уникальное имя, например, которое я когда-то использовал,
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"];
Надеюсь, это поможет;)
Обновить :
Вы можете использовать уникальное имя, как это,
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\n",finalUniqueImageNAme] dataUsingEncoding:NSUTF8StringEncoding]];
И второе, что вы должны использовать AFNetworking
делать такие вещи. он будет управлять такими вещами, как границы набора и т. д. Нажмите здесь для AFNetworking GitHub
Обновление 2 (согласно запросу комментария):
Вы должны использовать NSURLSession
вместо nsurlconnection
потому что соединение устарело сейчас, так что ваш код должен быть таким
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];
меняет путь к
$path="mike/";
а затем загрузить изображение. Таким образом, ваше изображение будет загружено в папку Майк.
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];