❶ Mongodb在Linux 64位系統下,通過mongofiles上傳的單個文件有大小限制嗎
一樓的,MongoDB有配置文件?在哪呢?我這是頭回聽說。
建議你改用任意一種主流驅動進行上傳,如java的API,裡面有GridFS這個類,適用於管理文件系統的,這樣對於出錯的情況很容易把我,如利用try catch和writeconcern。
你這樣什麼錯誤信息都不給出,是沒辦法排查的。
❷ Mongodb的Gridfs存儲文件出現了一個異常
這個是由於同一系統下域名改變或者不同系統下用了同一個域名導致不同實例訪問出錯:
改變域名後,重啟下所有mongod/mongos實例,應該就可以了。
❸ 誰有 java 讀取mongodb文件的實例或者相關內容鏈接。
1:Jsp頁面:
[html]view plain
<td><imgsrc="${ctx}/mongoImg/show"></td>
[html]view plain
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<mongo:mongohost="${resource.db.host}"port="${resource.db.port}"/>
<mongo:db-factoryid="mongoDbFactory"dbname="gate"mongo-ref="mongo"/>
<beanclass="org.springframework.data.mongodb.gridfs.GridFsTemplate">
<constructor-argref="mongoDbFactory"/>
<constructor-argref="converter"/>
</bean>
<mongo:mapping-converterid="converter"/>
</beans>
[java]view plain
packagecom.crscic.igms.manager.web;
importjava.io.OutputStream;
importjava.util.List;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.data.mongodb.gridfs.GridFsTemplate;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importcom.mongodb.gridfs.GridFSDBFile;
@Controller
@RequestMapping(value="/mongoImg")
publicclassMongoImgController{
@Autowired
GridFsTemplategridFsTemplate;
@RequestMapping(value="/show")
publicvoidshow(HttpServletRequestreq,HttpServletResponseresp){
try{
OutputStreamout=resp.getOutputStream();
resp.setContentType("image/png");
List<GridFSDBFile>find=gridFsTemplate.find(null);
GridFSDBFilegridFSDBFile=find.get(0);
gridFSDBFile.writeTo(out);
out.flush();
out.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
❹ java gridfs 怎樣改fs前綴
1 import java.io.File;
2 import java.io.FileNotFoundException;
3
4 public class SearchFile {
5
6 public static void main(String[] args) throws FileNotFoundException {
7 File files = new File("F:/"); //創建File對象,指向F盤根目錄
8 String[] names = files.list(); //獲取F盤根目錄所有文件和路徑,並以字元串數組返回
9 for(String s:names){ //遍歷字元串數組
10 boolean a = s.startsWith("ja"); //文件名前綴帶有ja的返回true,沒有則返回false
11 boolean b = (new File(files.getAbsolutePath()+s)).isFile(); //判斷本次循環的字元串所指向的內容是否是文件,是則返回true.否則返回false
12 boolean c = s.contains("va"); //文件名是否包含"va",包含則返回true,否則false
13 if(a&&b){ //此處條件根據需要進行修改
14 System.out.println(s); //列印出符合條件的文件
15 }
16 }
17 }
18
19 }
第11行:一個細節問題
如果將
boolean b = (new File(files.getAbsolutePath()+s)).isFile();
改為
boolean b = (new File(s)).isFile();
則會一直返回false,因為沒有指定路徑,系統會在項目的目錄找s所指向的文件名,但是項目的目錄內沒有該文件,所以將一直判斷不存在該文件
原文地址:http://www.bkjia.com/Javabc/1141830.html
❺ 如何用spring集成mongodb實現文件上傳
首先要把必要的MongoDB需要的jar加進項目中
定義mongoDB的bean
[html] view plain
<bean id="mongoClient" class="com.mongodb.MongoClient">
<constructor-arg index="0" type="java.lang.String" name="host" value="127.0.0.1" />
<constructor-arg index="1" type="int" name="port" value="27017" />
</bean>
自定義實現mongodb增刪改實體類
[html] view plain
<bean id="mongoDB" class="com.test.MongoDB">
<property name="mongoClient" ref="mongoClient" />
<property name="dbName" value="orcl" />
</bean>
定義mongoClient基礎類
[java] view plain
public class MongoDB {
private MongoClient mongoClient;
private String dbName;
/**
* 獲取名為dbName資料庫
*
* @return
*/
public DB getDB() {
return mongoClient.getDB(dbName);
}
public MongoClient getMongoClient() {
return mongoClient;
}
public void setMongoClient(MongoClient mongoClient) {
this.mongoClient = mongoClient;
}
public String getDbName() {
return dbName;
}
public void setDbName(String dbName) {
this.dbName = dbName;
}
}
定義mongodb操作Dao類
[java] view plain
/**
* 增
*
* @param bean
* @return
*/
public T save(T bean) {
String beanJson = JsonUtil.getJSONString(bean);
DBCollection collection = mongoDB.getDB().getCollection(clazz.getSimpleName());
collection.save((DBObject)JSON.parse(beanJson));
return bean;
}
/**
* 刪
* @param id
*/
public void remove(String id) {
DBCollection collection = mongoDB.getDB().getCollection(clazz.getSimpleName());
BasicDBObject doc = new BasicDBObject();
doc.put("_id", id);
collection.remove(doc);
}
/**
* 改
* @param query
* @param newDoc
*/
public void update(BasicDBObject query, BasicDBObject newDoc) {
DBCollection collection = mongoDB.getDB().getCollection(clazz.getSimpleName());
collection.update(query, newDoc);
}
定義保存文件類
[java] view plain
/**
* 保存文件到MongoDB GridFS
*
* @param in - 需要保存文件的輸入流
* @param id - 需要保存文件的唯一ID
* @param fileName - 需要保存文件的文件名
* @param contentType - 需要保存文件的文件類型
* @param downloadName - 需要保存文件被下載時的文件名
*/
public void save(InputStream in, String id, String fileName, String contentType, String downloadName) {
GridFS fs = new GridFS(mongoDB.getDB(), this.getClass().getSimpleName());
GridFSInputFile fsFile = fs.createFile(in);
fsFile.setId(id);
fsFile.setFilename(fileName);
fsFile.setContentType(contentType);
fsFile.put("downloadName", downloadName);
fsFile.save();
}
/**
* 從MongoDB GridFS文件系統中刪除指定ID的文件
*
* @param id
*/
public void remove(String id) {
GridFS fs = new GridFS(mongoDB.getDB(), this.getClass().getSimpleName());
BasicDBObject query = new BasicDBObject("_id", id);
fs.remove(query);
}
/**
* 從MongoDB GridFS文件系統中批量刪除指定ID的文件
* @param ids
*/
public void batchRemove(String... ids) {
GridFS fs = new GridFS(mongoDB.getDB(), this.getClass().getSimpleName());
for(String id : ids){
BasicDBObject query = new BasicDBObject("_id", id);
fs.remove(query);
}
}
❻ MongoDB 如何取出文件
給一個欄位就可以去出來額,java不熟悉。。
❼ 使用MongoDB 的兄弟,有沒有採用 GridFS 做分布式文件系統的
常見的分布式文件系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自適用於不同的領域。它們都不是系統級的分布式文件系統,而是應用級的分布式文件存儲服務。
GFS(Google File System)
--------------------------------------
Google公司為了滿足本公司需求而開發的基於Linux的專有分布式文件系統。。盡管Google公布了該系統的一些技術細節,但Google並沒有將該系統的軟體部分作為開源軟體發布。
下面分布式文件系統都是類 GFS的產品。
HDFS
--------------------------------------
Hadoop 實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。 Hadoop是Apache Lucene創始人Doug Cutting開發的使用廣泛的文本搜索庫。它起源於Apache Nutch,後者是一個開源的網路搜索引擎,本身也是Luene項目的一部分。Aapche Hadoop架構是MapRece演算法的一種開源應用,是Google開創其帝國的重要基石。
Ceph
---------------------------------------
是加州大學聖克魯茲分校的Sage weil攻讀博士時開發的分布式文件系統。並使用Ceph完成了他的論文。
說 ceph 性能最高,C++編寫的代碼,支持Fuse,並且沒有單點故障依賴, 於是下載安裝, 由於 ceph 使用 btrfs 文件系統, 而btrfs 文件系統需要 Linux 2.6.34 以上的內核才支持。
可是ceph太不成熟了,它基於的btrfs本身就不成熟,它的官方網站上也明確指出不要把ceph用在生產環境中。
Lustre
---------------------------------------
Lustre是一個大規模的、安全可靠的,具備高可用性的集群文件系統,它是由SUN公司開發和維護的。
該項目主要的目的就是開發下一代的集群文件系統,可以支持超過10000個節點,數以PB的數據量存儲系統。
目前Lustre已經運用在一些領域,例如HP SFS產品等。