2016-06-23 32 views
0

Ich entwickle eine mobile Anwendung in FireMonkey und möchte ein Foto mit einer Smartphone-Kamera machen und in meiner Firebird-Datenbank speichern.Warum bekomme ich nicht alle Bilddaten in einer Indy HTTP Verbindung FireMonkey?

Ich habe mehrere Probleme, die Bilddaten über die HTTP-Verbindung zu übergeben, die ich benutze, da ich nicht alle Bilddaten auf dem Server bekomme und ich denke, es gibt eine maximale Größe für Parameter in der GET-Anfrage des HTTP Verbindung oder ähnliches etwas.

Dies ist der Code, den ich verwenden:

SAVE-Bilddaten in STREAM. PASS STREAM TO 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; 

Die Größe jsonPhoto.toString, wo die Bilddaten sind, ist 2368 Bytes.

Senden von Daten an SERVER VON HTTP-Verbindung

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; 

Der Gehalt an jsonPhoto.toString ich auf dem Server erhalten hat nicht alle Daten, die ich geschickt, um diesem Grund denke ich, dass es ein Parameter Größe standardmäßig in der HTTP-Verbindung. Außerdem habe ich getestet, dass die Größe der empfangenen Bilddaten 999 Bytes ist. In den anderen Parametern bekomme ich alle Informationen ohne Probleme.

Darüber hinaus, wenn ich Daten im Server bekomme, sollte ich es in der Datenbank wie ein JSON-Text oder wie ein Stream speichern?

Danke!

Antwort

1

Verwenden Sie nicht GET Anfrage. GET hat Größenbeschränkungen, abhängig von den Servereinstellungen, da alle Parameter in URL gesendet werden.

Verwenden POST statt GET

Soll ich es in der Datenbank wie ein json Text oder wie ein Strom sparen?

Es hängt davon ab, wie Sie die Daten weiterhin verwenden werden. Um den Zugriff auf die Daten als Bild zu erleichtern, ist es besser, als Stream zu speichern.

+0

Ja, es ist genau was passiert !! Verwenden Sie POST löste mein Verbindungsproblem, aber meine Begrenzung in der Größe war wegen ich beschränkte es, ohne dass ich es wusste. Danke, ich habe mich lange mit dieser Angelegenheit beschäftigt. Sorry für die Verzögerung meiner Antwort. – KryNaC