Example usage for com.mongodb.client.gridfs GridFSDownloadStream getGridFSFile

List of usage examples for com.mongodb.client.gridfs GridFSDownloadStream getGridFSFile

Introduction

In this page you can find the example usage for com.mongodb.client.gridfs GridFSDownloadStream getGridFSFile.

Prototype

public abstract GridFSFile getGridFSFile();

Source Link

Document

Gets the corresponding GridFSFile for the file being downloaded

Usage

From source file:UnitTest3.java

License:Open Source License

public static void testgridfs3() throws FileNotFoundException, IOException {

    long time1;//  w w w  .j a  v  a 2  s  .  co  m
    long time2;
    long time3;
    long time4;
    int n = 0;
    // "/home/anees/workspace/testdata/in/App3.class"
    String fileName = "makezip4.rar";

    MongoClient mongo = new MongoClient("localhost", 27017);
    //DB db = mongo.getDB("JFileDB");
    MongoDatabase db = mongo.getDatabase("JFileDB");
    GridFSBucket gridFSBucket = GridFSBuckets.create(db);

    // Get the input stream
    time1 = System.currentTimeMillis();
    InputStream streamToUploadFrom = new FileInputStream("/home/anees/workspace/testdata/in/" + fileName);

    // Create some custom options
    GridFSUploadOptions options = new GridFSUploadOptions().chunkSizeBytes(1024 * 1024)
            .metadata(new Document("type", "class"));

    byte data[] = new byte[64 * 1024 * 1024];
    GridFSUploadStream uploadStream = gridFSBucket.openUploadStream(fileName, options);

    while ((n = streamToUploadFrom.read(data)) > 0) {
        uploadStream.write(data, 0, n);
    }
    uploadStream.close();
    time2 = System.currentTimeMillis();

    time3 = System.currentTimeMillis();
    Date date = new Date();
    FileOutputStream streamToDownloadTo = new FileOutputStream(
            "/home/anees/workspace/testdata/out/" + fileName + "_" + date.toString());
    GridFSDownloadByNameOptions downloadOptions = new GridFSDownloadByNameOptions().revision(-1);

    GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStreamByName(fileName, downloadOptions);
    long fileLength = downloadStream.getGridFSFile().getLength();
    byte[] bytesToWriteTo = new byte[64 * 1024 * 1024];

    while ((n = downloadStream.read(bytesToWriteTo)) > 0) {
        streamToDownloadTo.write(bytesToWriteTo, 0, n);
    }
    downloadStream.close();
    time4 = System.currentTimeMillis();

    System.out.println("The fileId of the uploaded file is: " + uploadStream.getFileId().toHexString());
    System.out.println("Upload time taken : time2 - time1 : " + (time2 - time1));
    System.out.println("Download time taken : time4 - time3 : " + (time4 - time3));

    streamToDownloadTo.close();
    streamToUploadFrom.close();
    mongo.close();
}

From source file:UnitTest3.java

License:Open Source License

public static void testgridfs4() throws FileNotFoundException, IOException {

    MongoClient mongo = new MongoClient("localhost", 27017);
    //DB db = mongo.getDB("JFileDB");
    MongoDatabase db = mongo.getDatabase("JFileDB");
    GridFSBucket gridFSBucket = GridFSBuckets.create(db);

    // Get the input stream
    InputStream streamToUploadFrom = new ByteArrayInputStream("Hello World".getBytes(StandardCharsets.UTF_8));

    // Create some custom options
    GridFSUploadOptions options = new GridFSUploadOptions().chunkSizeBytes(1024)
            .metadata(new Document("type", "file"));

    ObjectId fileId = gridFSBucket.uploadFromStream("test", streamToUploadFrom, options);
    streamToUploadFrom.close();/*from w  w  w . j a va 2  s.  c  om*/
    System.out.println("The fileId of the uploaded file is: " + fileId.toHexString());

    // Get some data to write
    byte[] data = "some data to upload into GridFS".getBytes(StandardCharsets.UTF_8);

    GridFSUploadStream uploadStream = gridFSBucket.openUploadStream("sample_data");
    uploadStream.write(data);
    uploadStream.close();
    System.out.println("The fileId of the uploaded file is: " + uploadStream.getFileId().toHexString());

    /*
    gridFSBucket.find().forEach(new Block<GridFSFile>() {
            
    public void apply(final GridFSFile gridFSFile) {
        System.out.println(gridFSFile.getFilename());
    }
    });
    */

    /*
    gridFSBucket.find(eq("metadata.contentType", "image/png")).forEach(
        new Block<GridFSFile>() {
                    
            public void apply(final GridFSFile gridFSFile) {
                System.out.println(gridFSFile.getFilename());
            }
        });
    */

    FileOutputStream streamToDownloadTo = new FileOutputStream("/tmp/test.txt");
    gridFSBucket.downloadToStream(fileId, streamToDownloadTo);
    streamToDownloadTo.close();

    streamToDownloadTo = new FileOutputStream("/tmp/test.txt");
    GridFSDownloadByNameOptions downloadOptions = new GridFSDownloadByNameOptions().revision(0);
    gridFSBucket.downloadToStreamByName("test", streamToDownloadTo, downloadOptions);
    streamToDownloadTo.close();

    GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(fileId);
    int fileLength = (int) downloadStream.getGridFSFile().getLength();
    byte[] bytesToWriteTo = new byte[fileLength];
    downloadStream.read(bytesToWriteTo);
    downloadStream.close();

    System.out.println(new String(bytesToWriteTo, StandardCharsets.UTF_8));

    downloadStream = gridFSBucket.openDownloadStreamByName("sample_data");
    fileLength = (int) downloadStream.getGridFSFile().getLength();
    bytesToWriteTo = new byte[fileLength];
    downloadStream.read(bytesToWriteTo);
    downloadStream.close();

    System.out.println(new String(bytesToWriteTo, StandardCharsets.UTF_8));

    gridFSBucket.rename(fileId, "test2");

    gridFSBucket.delete(fileId);
    mongo.close();
}

From source file:com.dilmus.dilshad.scabi.db.DBackFile.java

License:Open Source License

public long get(String fileName, String fullFilePath) throws IOException, DScabiException {
    long time1;/*from  w  w w  .j  ava 2 s.  c om*/
    long time2;
    int n = 0;
    long total = 0;

    time1 = System.currentTimeMillis();

    /* Reference : works using fileName and MongoDB specific .revision(-1) to get latest version of file
    GridFSDownloadByNameOptions downloadOptions = new GridFSDownloadByNameOptions().revision(-1); // latest file
    GridFSDownloadStream downloadStream = m_gridFSBucket.openDownloadStreamByName(fileName, downloadOptions);
    ObjectId fileID = downloadStream.getGridFSFile().getObjectId();
    log.debug("get() file id : " + downloadStream.getGridFSFile().getId().toString());
     */

    String fid = getLatestFileID(fileName);
    if (null == fid) {
        throw new DScabiException("get() No file found with PutStatus=Completed for file : " + fileName,
                "DBF.GET.1");
    }
    log.debug("get() fid : {}", fid);
    GridFSDownloadStream downloadStream = m_gridFSBucket.openDownloadStream(new ObjectId(fid));
    log.debug("get() file id : " + downloadStream.getGridFSFile().getId().toString());

    /* This is only if using MongoDB specific .revision(-1) to get latest version of file
    if (false == isValidMetaData(fileName, fileID)) {
       log.debug("get() latest file has invalid meta data"); 
       downloadStream.close();
    downloadOptions.revision(-2); // prior version to latest file
    try {
       downloadStream = m_gridFSBucket.openDownloadStreamByName(fileName, downloadOptions);
    }
    catch (Exception e) {
       throw new DScabiException("get() No matches with valid meta data and PutStatus=Completed, No second latest also, for file : " + fileName, "DBF.GET.2");
    }
            
    ObjectId fileID2 = downloadStream.getGridFSFile().getObjectId();
    log.debug("get() file id : " + downloadStream.getGridFSFile().getId().toString());
    if (false == isValidMetaData(fileName, fileID2)) {
       downloadStream.close();
       throw new DScabiException("get() No matches with valid meta data and PutStatus=Completed for file : " + fileName, "DBF.GET.3");
    }
    }
    */

    FileOutputStream toStream = new FileOutputStream(fullFilePath);

    //long fileLength = downloadStream.getGridFSFile().getLength();
    byte[] bytesToWriteTo = new byte[m_bufferSize];

    while ((n = downloadStream.read(bytesToWriteTo)) > 0) {
        toStream.write(bytesToWriteTo, 0, n);
        total = total + n;
    }
    downloadStream.close();
    toStream.close();

    time2 = System.currentTimeMillis();
    log.debug("get() Download time taken : time2 - time1 : " + (time2 - time1));

    return total;
}

From source file:com.dilmus.dilshad.scabi.db.DBackFile.java

License:Open Source License

public long get(String fileName, OutputStream toStream) throws IOException, DScabiException {
    long time1;/*ww w.  j a  v  a2  s .c  o  m*/
    long time2;
    int n = 0;
    long total = 0;

    time1 = System.currentTimeMillis();

    String fid = getLatestFileID(fileName);
    if (null == fid) {
        throw new DScabiException("get() No file found with PutStatus=Completed for file : " + fileName,
                "DBF.GET2.1");
    }
    log.debug("get() fid : {}", fid);
    GridFSDownloadStream downloadStream = m_gridFSBucket.openDownloadStream(new ObjectId(fid));
    log.debug("get() file id : " + downloadStream.getGridFSFile().getId().toString());

    //long fileLength = downloadStream.getGridFSFile().getLength();
    byte[] bytesToWriteTo = new byte[m_bufferSize];

    while ((n = downloadStream.read(bytesToWriteTo)) > 0) {
        toStream.write(bytesToWriteTo, 0, n);
        total = total + n;
    }
    downloadStream.close();
    toStream.close();

    time2 = System.currentTimeMillis();
    log.debug("get() Download time taken : time2 - time1 : " + (time2 - time1));

    return total;
}

From source file:gridfs.GridFSTour.java

License:Apache License

/**
 * Run this main method to see the output of this quick example.
 *
 * @param args takes an optional single argument for the connection string
 * @throws FileNotFoundException if the sample file cannot be found
 * @throws IOException if there was an exception closing an input stream
 *//*from   w w w.  jav  a  2s  .  c o  m*/
public static void main(final String[] args) throws FileNotFoundException, IOException {
    MongoClient mongoClient;

    if (args.length == 0) {
        // connect to the local database server
        mongoClient = new MongoClient();
    } else {
        mongoClient = new MongoClient(new MongoClientURI(args[0]));
    }

    // get handle to "mydb" database
    MongoDatabase database = mongoClient.getDatabase("mydb");
    database.drop();

    GridFSBucket gridFSBucket = GridFSBuckets.create(database);

    /*
     * UploadFromStream Example
     */
    // Get the input stream
    InputStream streamToUploadFrom = new ByteArrayInputStream("Hello World".getBytes(StandardCharsets.UTF_8));

    // Create some custom options
    GridFSUploadOptions options = new GridFSUploadOptions().chunkSizeBytes(1024)
            .metadata(new Document("type", "presentation"));

    ObjectId fileId = gridFSBucket.uploadFromStream("mongodb-tutorial", streamToUploadFrom, options);
    streamToUploadFrom.close();
    System.out.println("The fileId of the uploaded file is: " + fileId.toHexString());

    /*
     * OpenUploadStream Example
     */

    // Get some data to write
    byte[] data = "Data to upload into GridFS".getBytes(StandardCharsets.UTF_8);

    GridFSUploadStream uploadStream = gridFSBucket.openUploadStream("sampleData");
    uploadStream.write(data);
    uploadStream.close();
    System.out.println("The fileId of the uploaded file is: " + uploadStream.getFileId().toHexString());

    /*
     * Find documents
     */
    gridFSBucket.find().forEach(new Block<GridFSFile>() {
        @Override
        public void apply(final GridFSFile gridFSFile) {
            System.out.println(gridFSFile.getFilename());
        }
    });

    /*
     * Find documents with a filter
     */
    gridFSBucket.find(eq("metadata.contentType", "image/png")).forEach(new Block<GridFSFile>() {
        @Override
        public void apply(final GridFSFile gridFSFile) {
            System.out.println(gridFSFile.getFilename());
        }
    });

    /*
     * DownloadToStream
     */
    FileOutputStream streamToDownloadTo = new FileOutputStream("/tmp/mongodb-tutorial.txt");
    gridFSBucket.downloadToStream(fileId, streamToDownloadTo);
    streamToDownloadTo.close();

    /*
     * DownloadToStreamByName
     */
    streamToDownloadTo = new FileOutputStream("/tmp/mongodb-tutorial.txt");
    GridFSDownloadByNameOptions downloadOptions = new GridFSDownloadByNameOptions().revision(0);
    gridFSBucket.downloadToStreamByName("mongodb-tutorial", streamToDownloadTo, downloadOptions);
    streamToDownloadTo.close();

    /*
     * OpenDownloadStream
     */
    GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(fileId);
    int fileLength = (int) downloadStream.getGridFSFile().getLength();
    byte[] bytesToWriteTo = new byte[fileLength];
    downloadStream.read(bytesToWriteTo);
    downloadStream.close();

    System.out.println(new String(bytesToWriteTo, StandardCharsets.UTF_8));

    /*
     * OpenDownloadStreamByName
     */

    downloadStream = gridFSBucket.openDownloadStreamByName("sampleData");
    fileLength = (int) downloadStream.getGridFSFile().getLength();
    bytesToWriteTo = new byte[fileLength];
    downloadStream.read(bytesToWriteTo);
    downloadStream.close();

    System.out.println(new String(bytesToWriteTo, StandardCharsets.UTF_8));

    /*
     * Rename
     */
    gridFSBucket.rename(fileId, "mongodbTutorial");

    /*
     * Delete
     */
    gridFSBucket.delete(fileId);

    database.drop();
}