2016-06-23 3 views
0

私はFireMonkeyでモバイルアプリケーションを開発しています。スマートフォンカメラで写真を撮り、Firebirdデータベースに保存したいと考えています。Indy HTTP接続FireMonkeyですべての画像データを取得できないのはなぜですか?

私は使用しているHTTP接続を介して画像データを渡す際にいくつか問題があります。サーバーの画像データをすべて取得しないため、HTTPのGET要求にパラメータの最大サイズがあると思います接続または同様のもの。流れの中

SAVE画像データ:

これは私が使用するコードです。 PASSストリームにJSON

stream := TMemoryStream.Create; 
try 
    image.Bitmap.SaveToStream(stream); 
    stream.Position := 0; 
    jsonPhoto := TJSONArray.Create; 
    try 
    jsonPhoto := TDBXJSONTools.StreamToJSON(stream, 0, stream.Size); 
    finally 
    //jsonPhoto.Free; 
    end; 
finally 
    stream.Free; 
end; 

画像データであるjsonPhoto.toStringの大きさは、2368バイトあります。 HTTP接続

try 
    result := IdHTTP1.Get(TIdURI.PathEncode('http://'+MyDirIP+':8080/DATABASE_NAME?USERNO='+userNum+'&BUILDINGNO='+jsonBuildNo+'&BUILDINGNAME='+jsonBuildName+'&OBJECTNO='+jsonObjNo+'&OBJECTNAME='+jsonObjName+'&PHOTO='+jsonPhoto.ToString+'&NOTE='+memo_Notes.Lines.Text)); 
except 
    on E: Exception do begin 
    ShowMessage('Error connection: '+E.Message); 
    end; 
end; 

私は、サーバー上で取得jsonPhoto.toStringの内容をBYサーバに

SEND DATAが、私はこのような理由により、送信されていないすべてのデータを持って、私はパラメータがあると思いますデフォルトでは、HTTP接続でのサイズです。また、受信した画像データのサイズが999バイトであることを確認しました。他のパラメータでは、問題なくすべての情報を取得できます。

また、サーバーにデータを取得するときに、jsonのテキストのように、またはストリームのようにデータベースに保存する必要がありますか?

ありがとうございます!

答えて

1

GETリクエストを使用しないでください。 GETには、すべてのパラメータがURLで送信されるため、サーバーの設定に応じてサイズの制限があります。

利用POST代わりのGET

私はJSONテキストのようなまたはストリームのようにデータベースに保存すべきか?

どのようにデータを引き続き使用するかによって異なります。画像としてのデータへのアクセスを容易にするために、ストリームとして保存する方がよいでしょう。

+0

はい、これはまさに起きています! POSTを使用して私の接続の問題を解決しましたが、サイズの制限は私がそれを知っていなかったために制限していたためです。ありがとう、私はこの問題で長い時間がかかりました。私の答えが遅れて申し訳ありません。 – KryNaC

関連する問題