2016-09-22 2 views
0

У нас есть сайт, который использует ng-file-upload для отправки запроса на бэкэнд для загрузки изображений. Он преобразует изображение в разные размеры. & Загрузить на Сервер Amazon S3. Он отлично работает в Интернете. Наш внешний интерфейс & внутренний номер содержит JS Code.Загрузка изображения iOS на S3 с помощью Node.js с Multiparty и GraphicsMagick

Из приложения iOS мы можем загружать файлы в AWS SDK for iOS, но это занимает слишком много времени, а также время ожидания запроса.

В соответствии с требованием,
При использовании обычного способа для загрузки файлов из ОС IOS App на сервера (узла), затем преобразование к различным размерам (нг-файл-загрузку - многопартийной & GraphicsMagick) & затем загрузить сервер амазонки (S3).

Итак, мы используем традиционный метод для загрузки изображения на сервер.

Код для изображения Загрузить

NSMutableURLRequest *urlRequest = [NSMutableURLRequest 
              requestWithURL:url 
              cachePolicy:NSURLRequestUseProtocolCachePolicy 
              timeoutInterval:DEFAULT_TIMEOUT]; 

[urlRequest setHTTPMethod:@"POST"]; 

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

NSMutableData *body = [NSMutableData data]; 

//Image 
if(imageData) 
{ 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", imgName, imgName] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:imageData]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[urlRequest setHTTPBody:body]; 

Мы используем многопартийной в Node.js бэкэндом. Даже мы не можем получить какой-либо файл для заполнения для дальнейших шагов. Это вызывает ошибку в backend.

Сведения о файле в Вводные заголовки не заполнены во время загрузки из приложения.
Таким образом, мы получаем ошибку, такую ​​как 'path' undefined.

Таким образом, мы не получаем никакого файла или изображения для создания бэкэнд, поэтому не можем обрабатывать дальнейшие данные для разговора, а также загружать. Мы застряли в этом месте.

Пожалуйста, сделайте необходимое. Любая помощь будет оценена.
Заранее спасибо.

+1

Пожалуйста, проверьте один раз на сервере (Node), имя файла сценария должно быть таким же, как отправка с iOS – sandy

+1

и с ios, которые мы используем для загрузки изображения на сервер. [body appendData: [[NSString stringWithFormat: @ "Content-Disposition: form-data; name = \" userfile \ " ; filename = \"% @ \ "\ r \ n", imgName] dataUsingEncoding: NSUTF8StringEncoding]]; – sandy

+0

@sandy Большое вам спасибо. Вы спасли мой день! Cheers :) –

ответ

1

Я думаю, вы должны следовать два шага -

1- Пожалуйста, проверьте один раз на сервере (Node) Сценарий имя файла должно быть таким же, как отправка с прошивкой.

2- от ios, которые мы используем, чтобы загрузить изображение на сервер.

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

имя = \ "UserFile \" должен быть матч с сервера сценария.

+1

Большое спасибо. Я сделал ошибку, передав значение имени .. :) –

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