2016-09-22 8 views
0

ng-file-uploadを使用して画像をアップロードするバックエンドにリクエストするウェブサイトがあります。画像を異なるサイズに変換します& Amazon S3サーバーにアップロードします。それはウェブ上でうまく動作しています。 フロントエンド&バックエンドには、JSコードが含まれています。iOS ImageマルチノードとGraphicsMagickでNode.jsを使用してS3にアップロード

iOSアプリケーションからは、ファイルをAWS SDK for iOSにアップロードできますが、時間切れになりすぎてすべてのタイムアウトを要求しています。 (NGファイルアップロード - マルチパーティ& GraphicsMagickの)要件、
あたりのように、異なるサイズへの変換、サーバ(ノード)をIOSのアプリケーションからのファイルのアップロードのための従来の方法を用いることにより

&次いでにアップロードアマゾンサーバー(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のバックエンドでのマルチパーティを使用しています。さらなる処理のためにファイルオブジェクトを生成することさえできません。バックエンドにエラーが発生します。

ファイルの詳細リクエストヘッダーは、アプリケーションからのアップロード中にバックエンドで空です。
「パス」が定義されていないのようなエラーが表示されます。

私たちはバックエンドにファイルや画像を取得していないので、アップロードするだけではなく、会話のためにさらに処理することはできません。我々はこの場所で立ち往生した。

必要な操作をしてください。どんな助けもありがとう。
ありがとうございます。

+1

スクリプトファイル名は、iOS – sandy

+1

からの送信と同じでなければなりません。また、私たちはそれを使ってサーバー上に画像をアップロードしています。 [本文のappendData:[[NSString stringWithFormat:@ "コンテンツの処分:フォームデータ;名前= \"ユーザーファイル\ " ;ファイル名= \"%@ \ "\ r \ n"、imgName] dataUsingEncoding:NSUTF8StringEncoding]]; – sandy

+0

@sandyありがとうございました。あなたは私の一日を救った!乾杯! –

答えて

1

は、私はあなたが2つの手順に従うことを持っている必要がありますだと思う -

の1-がサーバに一度確認してください(ノード)のスクリプトファイル名はiOSのからの送信と同じでなければなりません。

私は、このようにサーバー上の画像をアップロードするために使用しています。

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

名= \ "userfile \"は、サーバースクリプトと一致しなければなりません。

+1

ありがとうございました..名前の値を渡すことで間違いを犯しました。:) –

関連する問題