Closed waltrick closed 10 years ago
Could you post a small (~100 bytes) file with PHP, then use the mongo shell to do find({}) on the "x.files" and "x.chunks" collections to get the JSON? and post it here, then I can compare what PHP does and what TMongoStream does and where's the difference. (what mongo,delphi version are you using?)
Sanders,
One difference I found was that the key value "Length" of ".files" to be charged by the procedure TBSONDocument.Load (bsonDoc.pas), is higher in the files generated by PHP because when generated by the component, this value remains the same. ~line 434, stmRead (@ i, 4);
I created an environment for testing:
Mongo's Server Version: 2.6.0 Host: 179.188.20.128 Port: 27017 Obs: No Auth.
PHP Upload Version: 5.5 Link: http://app.spezzi.com.br/documentos
Delphi Downlod Version: XE2 TMongoWire\demo\example2 (your example)
FilesCollection='spezzi.mongo_documentos';
Sorry my english a child of 7 years (google translate) .
News, I created a java applet, and the files were created properly.
I can't access the URL you supply above. I'm not sure what you mean by the 'length' field, but I'm glad the java applet works. Perhaps it's PHP that is misbehaving? I'll close this issue, but feel free to open a new issue if you encounter this problem again. If you do, please post relevant pieces of JSON so I can compare and find what's wrong.
Sanders,
I do not know if the problem was in php or MongoWire, but worked as a java application, actually the problem is in your component. In short, generated files are corrupted when downloading PHP in Delphi (MongoWire).
Below is the JSON:
{ "_id": ObjectId ("5446c26969f3cb8b6bd3ebba") "filename": "spezzi.jpg" "filetype", "image \ / jpeg" "uploadDate": ISODate ("2014-10-21T20: 30: 33.359Z") "length": NumberInt (60466) "chunksize": NumberInt (261120) "md5", "79d13d30c16f476676a512538ad2c6bc" }
The .files and .chunks are exactly alike when generated in PHP and Delphi, made this comparison.
It is correct the chunksize is different? https://github.com/stijnsanders/TMongoWire/blob/master/mongoStream.pas#L59 $40000=262144 <> 261120
Sanders, I made this change to stay compatible.
"Changed in version 2.4.10: The default chunk size changed from 256k to 255k." http://docs.mongodb.org/manual/core/gridfs/#chunk-disambiguation
//mongoStreamDefaultChunkSize=$40000;//256KB mongoStreamDefaultChunkSize=$3FC00; //255kb
Thank you. I've updated it.
Hi Sanders,
I have the following situation: Upload files in php and downlod in your component, when I do that the file is corrupted. But when I upload and downlod for its component works correctly.
Any suggestions?