2016-06-23 5 views
0

FireMonkey에서 모바일 응용 프로그램을 개발 중이며 스마트 폰 카메라로 사진을 찍어 Firebird 데이터베이스에 저장하고 싶습니다.인디 HTTP 연결 FireMonkey에서 모든 이미지 데이터를 가져 오지 않는 이유는 무엇입니까?

서버에서 모든 이미지 데이터를 가져 오지 않았기 때문에 HTTP 연결을 통해 이미지 데이터를 전달하는 데 문제가 있습니다. HTTP의 GET 요청에 매개 변수의 최대 크기가 있다고 생각합니다. 연결 또는 유사한 무언가. 스트림

이미지 저장 DATA :

은 내가 사용하는 코드입니다. 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; 

화상 데이터가 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 서버에

송신 데이터 나는 이러한 이유에 의해, 전송 모든 데이터를 가지고, 나는 매개 변수가 있다고 생각 HTTP 연결에서 기본적으로 크기입니다. 또한 수신 된 이미지 데이터의 크기가 999 바이트임을 테스트했습니다. 다른 매개 변수에서는 문제없이 모든 정보를 얻습니다.

또한 서버에 데이터를 가져올 때 json 텍스트 또는 스트림처럼 데이터베이스에 저장해야합니까?

감사합니다.

답변

1

GET 요청을 사용하지 마십시오. GET에는 모든 매개 변수가 URL로 전송되기 때문에 서버 설정에 따라 크기 제한이 있습니다.

사용 POST 대신 GET

가 나는 JSON 텍스트처럼 또는 스트림과 같은 데이터베이스에 저장해야 하는가?

데이터를 계속 사용하는 방법에 따라 다릅니다. 이미지로 데이터에 쉽게 액세스하려면 스트림으로 저장하는 것이 좋습니다.

+0

예, 정확히 어떤 일이 일어 났습니까 !! POST를 사용하여 연결 문제를 해결했지만 크기가 제한되어 있었기 때문에 제한하지 못했습니다. 고마워, 나는이 문제로 오랜 시간이 걸렸다. 내 대답이 늦어서 미안해. – KryNaC