如何使用Objectory/Dart從文件上傳字段將二進制文件保存到Mongodb中?如何使用對話框將二進制文件保存到Mongodb
-2
A
回答
3
其實你的問題在很多層面上都有很多含義。 基本上在MongoDB級別上,可以將二進制數據保存在普通文檔的二進制類型的字段中。我相信它現在在mongo_dart中工作。 在objectory_console(通過mongo_dart直接與mongodb進行通信的目標服務器端版本)中,我認爲它也可以。 你的模型對象會像
class UploadedFile extends PersistentObject {
String get fileName => getProperty('fileName');
set fileName(String value) => setProperty('fileName',value);
BsonBinary get content => getProperty('content');
set content(BsonBinary value) => setProperty('content',value);
....
....
}
BsonBinary已任命構造BsonBinary.from(List from)
其效率高,而且只能用飛鏢工作:IO(服務器端) 對於基於對象工廠目前你可以使用名爲constructor BsonBinary.fromHexString()
瀏覽器。我恐怕這會產生重大的開銷。
另一個考慮因素是對MongoDB中文檔總大小的限制,即16mb。所以你的文件必須小於這個尺寸。
通過GridFS層在MongoDB中存儲更大容量的文件,GridFS支持最近被添加到了mongo_dart。從https://github.com/vadimtsushko/mongo_dart/blob/master/test/gridfs_tests.dart
用例:
Future testFileToGridFSToFile() {
GridFS.DEFAULT_CHUNKSIZE = 30;
GridIn input;
String dir = path.dirname(path.fromUri(Platform.script));
var inputStream = new File('$dir/gridfs_testdata_in.txt').openRead();
Db db = new Db('${DefaultUri}mongo_dart-test');
return db.open().then((c){
var gridFS = new GridFS(db);
clearFSCollections(gridFS);
input = gridFS.createFile(inputStream, "test");
return input.save();
}).then((c) {
var gridFS = new GridFS(db);
return gridFS.getFile('test');
}).then((GridOut gridOut) {
return gridOut.writeToFilename('$dir/gridfs_testdata_out.txt');
}).then((c){
List<int> dataIn = new File('$dir/gridfs_testdata_in.txt').readAsBytesSync();
List<int> dataOut = new File('$dir/gridfs_testdata_out.txt').readAsBytesSync();
expect(dataOut, orderedEquals(dataIn));
db.close();
});
}
相關問題
- 1. 如何使用保存文件保存文件對話框
- 2. 二進制文件:如何將.csv保存爲二進制文件.dat
- 3. 如何將矢量保存到二進制文件?
- 4. ActionScript 3:如何將二進制數據保存到文件
- 5. 如何將二進制表示保存到文件
- 6. 使用Javascript保存文件對話框
- 7. 強制文件保存對話框
- 8. 保存到二進制文件
- 9. 保存文件不使用保存文件對話框
- 10. 使用保存文件對話框保存xml文件
- 11. 如何使用vbscript將文件保存到數據庫二進制字段
- 12. vb.net將網絡二進制文件保存到文件
- 13. 如何將文件保存到MongoDB?
- 14. 如何使用mongodb與linq來存儲大型二進制對象(文件)?
- 15. 保存文件保存對話框
- 16. 如何將Excel HTML文本文件保存到Excel xls二進制文件中?
- 17. 如何使用文件下載對話框將文件保存爲只讀
- 18. 如何在C#中使用保存對話框保存ASCII文本文件?
- 19. 如何讀取二進制文件並將其保存管道
- 20. 強制MSBuild保存對二進制文件的引用
- 21. 如何使用保存對話框下載文件
- 22. 保存二進制文本文件
- 23. 如何通過TableServiceEntity將二進制文件保存到Azure表存儲?
- 24. 使用保存對話框保存已創建的XML文件
- 25. 如何從Spring控制器創建文件保存對話框?
- 26. 將對象保存爲二進制文件到外部存儲器? (Android)
- 27. 用saveas對話框保存文件?
- 28. 如何二進制文件保存到數據庫
- 29. 使用java保存對話框將文本內容導出到文本文件
- 30. 如何從C#中的保存文件對話框保存?
看來mongo_dart現在支持至少的文件塊部分GridFS的https://github.com/vadimtsushko/mongo_dart/blob/master/doc/feature_checklist.md但沒有看到如何使用它的任何例子。 – Delaney
謝謝德萊尼,我已經更新了答案並添加了GridFS示例 –