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;
}
感谢您的帮助,但您能否给出完整的来源原因,我试着做你的答案,它给了我例外 –