为什么我没有在 Indy HTTP 连接 FireMonkey 中获取所有图像数据?
Why I do not get all the image data in an Indy HTTP connection FireMonkey?
我正在 FireMonkey 中开发移动应用程序,我想用智能手机相机拍照并将其存储在我的 Firebird 数据库中。
我在通过我使用的 HTTP 连接传递图像数据时遇到了几个问题,因为我没有在服务器中获取所有图像数据,而且我认为 GET 请求中的参数有一个最大大小HTTP 连接或类似的东西。
这是我使用的代码:
在流中保存图像数据。将流传输到 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的内容并不是我发送的所有数据,因此我认为HTTP连接中默认有一个参数size。而且我测试过接收到的图片数据大小是999 bytes。在其他参数中,我毫无问题地获得了所有信息。
此外,当我在服务器中获取数据时,我应该将其像 json 文本或流一样保存在数据库中吗?
谢谢!
不要使用 GET
请求。 GET
有大小限制,具体取决于服务器设置,因为所有参数都在 URL.
中发送
使用POST
代替GET
Should I save it in database like a json text or like a stream?
这取决于您将如何继续使用这些数据。为了便于访问图像数据 - 最好存储为流。
我正在 FireMonkey 中开发移动应用程序,我想用智能手机相机拍照并将其存储在我的 Firebird 数据库中。
我在通过我使用的 HTTP 连接传递图像数据时遇到了几个问题,因为我没有在服务器中获取所有图像数据,而且我认为 GET 请求中的参数有一个最大大小HTTP 连接或类似的东西。
这是我使用的代码:
在流中保存图像数据。将流传输到 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的内容并不是我发送的所有数据,因此我认为HTTP连接中默认有一个参数size。而且我测试过接收到的图片数据大小是999 bytes。在其他参数中,我毫无问题地获得了所有信息。
此外,当我在服务器中获取数据时,我应该将其像 json 文本或流一样保存在数据库中吗?
谢谢!
不要使用 GET
请求。 GET
有大小限制,具体取决于服务器设置,因为所有参数都在 URL.
使用POST
代替GET
Should I save it in database like a json text or like a stream?
这取决于您将如何继续使用这些数据。为了便于访问图像数据 - 最好存储为流。