2013-10-27 3 views
0

Как загрузить видео с устройства iOS на сервер Django и после этого сохранить его в папку в формате mp4. Я что-то пробовал. Это мой IOS код:Как загрузить видео с устройства iOS на сервер Django

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:serverAddress]]; 

NSData *postData = [[NSData alloc] initWithContentsOfFile:[self.movieURL absoluteString]]; 

[request setPostValue:@"test" forKey:@"name"]; 
[request addData:postData withFileName:@"testt.mov" andContentType:@"video/quicktime" forKey:@"file"]; 

[request setDelegate:self]; 

[request setCompletionBlock:^ 
{ 
    NSLog(@"ResponseString:%@",[request responseString]); 
}]; 
[request setFailedBlock:^ 
{ 
    NSLog(@"Error"); 
}]; 

[request startSynchronous]; 

[picker dismissViewControllerAnimated:YES completion:nil]; 

И это мой питон код:

class UploadFileForm(forms.Form): 
title = forms.CharField(max_length=50) 
file = forms.FileField() 


def upload_file(request): 
    if request.method != "POST": 
     return HttpResponseNotAllowed(permitted_methods=['POST']) 

    form = UploadFileForm(request.POST.get('name'), request.FILES) 

    if form.is_valid(): 
     handle_uploaded_file(request.FILES['file']) 
     return HttpResponse(json.dumps({"Status": 0}, sort_keys=True)) 
    else: 
     return HttpResponse(json.dumps({"Status": 1}, sort_keys=True)) 


def handle_uploaded_file(file, path=''): 
    # filename = file._get_name() 
    destination_file = open('%s/%s' % (settings.MEDIA_ROOT, str(path) + 'test.mp4'), 'wb+') 
    for chunk in file.chunks(): 
     destination_file.write(chunk) 
    destination_file.close() 

Спасибо.

+0

Благодарим за отправку кода, но, пожалуйста, введите в свой вопрос немного больше подробностей: какая у вас проблема, какой результат вы ожидаете, и [что вы пробовали] (http://whathaveyoutried.com), так что далеко? Прохождение [контрольный список вопросов] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) поможет нам лучше ответить на ваш вопрос. Благодаря! –

+0

Здравствуйте, до сих пор я сделал контроллер выбора, который возвращает мне путь к видео на моем устройстве, и я пытаюсь преобразовать его в данные и отправить его на мой сервер python/django, и здесь я хочу, чтобы он получил его и сохраните на мой рабочий стол/папку видеофайл с моего устройства. Проблема заключалась в том, что он разбивается на сервере django, но я решаю его с помощью -> form = UploadFileForm (request.POST, request.FILES). Теперь form.is_valid() недействителен, потому что он не штрафует никаких данных. –

+0

Я изменил код iOS с помощью ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL: url]; [запрос setPostValue: @ "test" forKey: @ "title"]; [request setFile: urlString forKey: @ "file"]; [запрос setRequestMethod: @ "POST"]; [запрос setDelegate: self]; [запрос startSynchronous]; Теперь это дает мне: -> Неверное значение NSStringEncoding 0x0000. Предполагая NSASCIIStringEncoding. Остановит это сопоставление совместимости в ближайшем будущем. –

ответ

0

Решите его.

Вот код IOS:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL]; 

NSString *urlString=[urlvideo path]; 

NSString *str = serverAddress; 
NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

[request setPostValue:[NSString stringWithFormat:@"%@.mp4",videoName.text] forKey:@"title"]; 
[request setFile:urlString forKey:@"file"]; 
[request setRequestMethod:@"POST"]; 
[request setDelegate:self]; 
[request startSynchronous]; 

NSLog(@"responseStatusCode %i",[request responseStatusCode]); 
NSLog(@"responseStatusCode %@",[request responseString]); 

[picker dismissViewControllerAnimated:YES completion:NULL]; 
} 

Джанго Код:

class UploadFileForm(forms.Form): 
    title = forms.CharField(max_length=50) 
    file = forms.FileField() 


def upload_file(request): 
    if request.method != "POST": 
     return HttpResponseNotAllowed(permitted_methods=['POST']) 

form = UploadFileForm(request.POST, request.FILES) 

if form.is_valid(): 
    handle_uploaded_file(request.FILES['file'], request.POST.get('title')) 
    return HttpResponse(json.dumps({"Status": 0}, sort_keys=True)) 
else: 
    return HttpResponse(json.dumps({"Status": 1}, sort_keys=True)) 


def handle_uploaded_file(file, string, path=''): 
    destination_file = open('%s/%s' % (settings.MEDIA_ROOT, str(path) + string), 'wb+') 
    for chunk in file.chunks(): 
     destination_file.write(chunk) 
    destination_file.close() 

Проблема была в Джанго, не нашел файл.

+0

- правильно ли отформатирован код python? –

Смежные вопросы