How to pass 100 MB avi file from client to server by using Remobjects SDK

Hi,

We are using Remobjects SDK with Delphi 7 in our Client/Server software. And Interbase as back end.

We are getting errors while passing a 100mb .avi media file from Client to Server.

Actually what we are doing is…

  1. Created a clientdataset with a Blob type field.
  2. Then we are creating a Tmemorystream variable and loading .avi file in that
  3. Then we are converting the memorystream to string
  4. Then we are loading the string to clientdataset BLOB field
  5. Then we are passing the clientdataset data to server by using remobjects sdk
  6. And in server side we get error.

Some of callstack…

(0001A2FD){rtl70.bpl } [4001B2FD] Variants.VarArrayCreateError + $1D1
(0001A3D8){rtl70.bpl } [4001B3D8] Variants.VarResultCheck + $4
(0001AAEE){rtl70.bpl } [4001BAEE] Variants.@DispInvoke + $34E
(0001A6F7){rtl70.bpl } [4001B6F7] Variants.HandleConversionException + $2E3
(0001A6FC){rtl70.bpl } [4001B6FC] Variants.HandleConversionException + $2E8
(0001AB25){rtl70.bpl } [4001BB25] Variants.@DispInvoke + $385
(0001AB2A){rtl70.bpl } [4001BB2A] Variants.@DispInvoke + $38A
(0001F2F1){rtl70.bpl } [400202F1] Variants.@OleVarFromVar + $10D
(0001F1DC){rtl70.bpl } [400201DC] Variants.@OleVarFromPStr + $B4
(0001AACC){rtl70.bpl } [4001BACC] Variants.@DispInvoke + $32C
(00021DCB){rtl70.bpl } [40022DCB] Variants.VarArrayCreate + $87
(000312CA){rtl70.bpl } [400322CA] Classes.TStream.Seek + $56
(00021EA6){rtl70.bpl } [40022EA6] Variants.VarArrayAsPSafeArray + $E
(0001A753){rtl70.bpl } [4001B753] Variants.HandleConversionException + $33F
(0000661D){rtl70.bpl } [4000761D] System.@WStrCopy + $3D
(0001F062){rtl70.bpl } [40020062] Variants.@VarFromWStr + $2E
(0001F100){rtl70.bpl } [40020100] Variants.@OleVarFromLStr + $28
(0001AB25){rtl70.bpl } [4001BB25] Variants.@DispInvoke + $385
(0001AB2A){rtl70.bpl } [4001BB2A] Variants.@DispInvoke + $38A
(0001ABEB){rtl70.bpl } [4001BBEB] Variants.@VarCopy + $3B
(000221D1){rtl70.bpl } [400231D1] Variants.@VarArrayPut + $AD
(0001A753){rtl70.bpl } [4001B753] Variants.HandleConversionException + $33F
(0001A791){rtl70.bpl } [4001B791] Variants.@VarClear + $D
(0001A799){rtl70.bpl } [4001B799] Variants.@VarClr + $1
(0007DF29){TAS.exe } [0047EF29] uROBinaryHelpers.WriteVariantArrayToBinary (Line 328, “uROBinaryHelpers.pas” + 21) + $38

Please help me…
how to pass a 100mb medai file.

You are doing some non-optimal steps because usage of memory for passing of 100 mb file can consume up to 500 mb.

I can suggest to change logic for updating a big files like:

  • pass your big file to server in small chunks. we have Extended File Transfer and File Broadcast examples that demostrates how to do this.
  • on server-side, put received file to clientdataset and later to DB.

Pls put your questions only in one place: here or to support@. You shouldn’t duplicate your question in several places

FWIW, I use the “chunked” method very effectively for large data files, and it works very well. It has benefits like showing progress, ability to nip other smaller items in, and lots more, while not affecting the overall speed.

Thanks for the replies.

But my case is little different. We are not sending the 100mb video file itself to the server by RO SDK.

In my case, I have a clientdataset and this clientdataset have a BLOB type field.

Then we store a 100mb video file in that Blob Field and it works fine at client side.

And then we send the Clientdataset.data to Server by RO Binary format using RO SDK.

And when it enters to Server procedure execution in Server side then error raises. And that error comes at Begin of the server procedure. So its very difficult to debug also.

Please help.

why you can’t send your Clientdataset.data in small chunks to server?

another possibility: send PK + 100mb video file to server and server will store received file into blob and will update DB

1 Like