Bagaimana cara mengubah ukuran potongan dan mengambil potongan tertentu di Mongodb Gridfs?

Saya cukup baru di Mongodb sekarang yang ingin saya lakukan adalah memasukkan file pdf sebesar 3MB menggunakan driver JAVA dan ingin mengubah ukuran potongan dari 256 menjadi 1MB dan kemudian ingin mengambil potongan kedua, katakanlah halaman ke-2 dari dokumen pdf. Bagaimana saya bisa melakukannya. Terima kasih.


person Community    schedule 20.02.2014    source sumber


Jawaban (1)


Umumnya, setelah dokumen ditulis ke GridFS Anda perlu menulis ulang (menghapus dan menyimpan lagi) untuk mengubah ukuran potongan.

Karena GridFS tidak mengetahui apa pun tentang format data dalam file, maka GridFS tidak dapat membantu Anda mencapai "halaman ke-2". Implementasi InputStream yang dikembalikan dari GridFSDBFile menghindari blok pembacaan saat Anda menggunakan metode skip(long). Jika Anda mengetahui bahwa "halaman ke-2" berisi N byte ke dalam file, maka Anda dapat melewati banyak byte tersebut di aliran dan mulai membaca.

HTH, Rob

P.S. Ingatlah bahwa skip(long) mengembalikan jumlah byte yang sebenarnya dilewati. Anda tidak boleh berasumsi bahwa skip(12) selalu melewatkan 12 byte.

P.P.S Memulai membaca dari tengah PDF dan memahami isinya akan sulit kecuali Anda telah mempertahankan status dari halaman sebelumnya.

person Rob Moore    schedule 21.02.2014
comment
Terima kasih tentang fungsi Skip() tetapi bagaimana kita dapat mengubah ukuran bongkahan, katakanlah saya telah mengubah ukuran bongkahan sebelum menyimpannya dengan gfsinputfile.setChunkSize(nilai dalam byte) tetapi saya perhatikan dalam ukuran potongan keluaran selalu muncul 262144 bagaimana cara mengatasinya. - person ; 21.02.2014
comment
Sudahkah Anda mencoba menggunakan varian simpan(panjang) alih-alih menyetel ukuran potongan lalu memanggil simpan()? Jika Anda menggunakan GridFSInputFile.getOutpuStream() maka Anda perlu memastikan setChunkSize(...) dipanggil sebelum getOutputStream(). Jika tidak, setChunkSize(...) tidak boleh dilakukan. - person Rob Moore; 22.02.2014