0
這種方法用於從MongoDB的imageID下載圖像,但當用戶請求URL時需要在HTML中顯示圖像。 http://localhost:8080/UploadRest/webresources/files/download/file/64165如何從Restful java中以HTML格式顯示圖像
<img src="http://localhost:8080/UploadRest/webresources/files/download/file/64165">
我需要做的方法顯示無法下載
@GET
@Path("/download/file/{id}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadFilebyID(@PathParam("id") String id) throws IOException {
Response response = null;
MongoClientURI uri = new MongoClientURI(CONNECTION_URL);
MongoClient mongoClient = new MongoClient(uri);
DB mongoDB = mongoClient.getDB(DATABASE_NAME);
//Let's store the standard data in regular collection
DBCollection collection = mongoDB.getCollection(USER_COLLECION);
logger.info("Inside downloadFilebyID...");
logger.info("ID: " + id);
BasicDBObject query = new BasicDBObject();
query.put("_id", id);
DBObject doc = collection.findOne(query);
DBCursor cursor = collection.find(query);
if (cursor.hasNext()) {
Set<String> allKeys = doc.keySet();
HashMap<String, String> fields = new HashMap<String,String>();
for (String key: allKeys) {
fields.put(key, doc.get(key).toString());
}
logger.info("description: " + fields.get("description"));
logger.info("department: " + fields.get("department"));
logger.info("file_year: " + fields.get("file_year"));
logger.info("filename: " + fields.get("filename"));
GridFS fileStore = new GridFS(mongoDB, "filestore");
GridFSDBFile gridFile = fileStore.findOne(query);
InputStream in = gridFile.getInputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
int data = in.read();
while (data >= 0) {
out.write((char) data);
data = in.read();
}
out.flush();
ResponseBuilder builder = Response.ok(out.toByteArray());
builder.header("Content-Disposition", "attachment; filename=" + fields.get("filename"));
response = builder.build();
} else {
response = Response.status(404).
entity(" Unable to get file with ID: " + id).
type("text/plain").
build();
}
return response;
}
感謝您的幫助,但您能否給出完整的來源原因,我試着做你的答案,它給了我例外 –