專案三 集團官網 總結 2 遞迴建立子目錄

2022-01-21 20:26:03 字數 3034 閱讀 4695

在實際專案中,一般都會有上傳的需求,而在我們的專案檔案中,使用thinkjs命令建立專案時,則會自動建立www/static目錄,該目錄下專門用來存放 js、css、等靜態資源。而在實現上傳的儲存在自己的專案中時,我們並不是一開始就在www底下建立乙個固定的目錄來存放已經上傳的,而是通過thinkjs自動來根據需求來建立目錄路徑。

比如,在我們的專案中,存放簡歷的資料夾暫時先就叫做「jobfiles」,類似於:

這個,jobfiles資料夾就是只有當上傳的時候才會自動在存放在靜態檔案www/static目錄下建立,而對於工作來說,這樣子建立的資料夾就比較靈活,因為如果沒有請求檔案上傳的方法時,也就不會產生這個資料夾,更加方便。而對於自動建立資料夾的方法,thinkjs官網也給了自己的方法:

think.mkdir(p, mode)
p  要建立的目錄 

mode 要建立的目錄許可權,預設為 0777遞迴的建立目錄,如果目錄已經存在,那麼修改目錄的許可權。

//假設 /home/welefen/a/b/ 不存在

think.mkdir("/home/welefen/a/b");

think.mkdir("home/welefne/a/b/c/d/e"); //

遞迴建立子目錄

/*

* * 獲取未壓縮路徑___本地檔案路徑

* @param jpg 型別

* * @fmt 格式化字串

* @date 為需要格式化的日期

* 示例:format(new date(),'yyyy-mm-dd hh:mm:ss');

* 返回值為字串 */

tutil.dateformat = function

(pdate, fmt)

if (null == date || undefined == date) return '';

var o =;

if (/(y+)/.test(fmt)) fmt = fmt.replace(regexp.$1, (date.getfullyear() + "").substr(4 - regexp.$1.length));

for (var k in

o)

if (new regexp("(" + k + ")").test(fmt)) fmt = fmt.replace(regexp.$1, (regexp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" +o[k]).length)));

return

fmt;

};

③上傳檔案、的方法

/*

* * 上傳

* @returns

*/async uploadaction() , this.file('file'));

let originalfilename =file.originalfilename;

let fpath =file.path;

let suffix = fpath.substr(fpath.lastindexof(".") + 1);//

取字尾if (suffix == "jpg" || suffix == "png" || suffix == "jpeg" || suffix == "doc" || suffix == "docx" || suffix == "pdf") );

} else

} else

} else

}

在這裡,特別注意的乙個問題,也就是讓自己找了很久的bug,就是上面寫的upload方法中的定義的

var uploadpath = "static/jobfiles" + fileobj.timepath + fileobj.filename;
之前就是因為自己寫成了/static/jobfiles,這樣在上傳的方法中,連自己也不知道上傳的檔案被放在哪個資料夾裡,最後在大神同事的指點下,才恍然大悟:thinkjs在遞迴建立目錄時,如果自己將路徑寫成"/static/jobfiles..."的話,它就會去這個js檔案中往上找/static/jobfiles,但是在這個js資料夾之上又找不到所謂的jobfiles資料夾,因此最終也就不知道上傳的檔案跑**了,但是如果將路徑寫成相對路徑"static/jobfiles..."的話,它就會直接去靜態檔案"www"底下去找"static/jobfiles...",若沒有此資料夾的話,就會按我們所想的去建立乙個目錄。還有一點:上面的方法中,還有一句:  fs.renamesync(fpath, uploadpath); newpath)

這個也是值得一提的知識點:(nodejs中的fs.renamesync)

語法:

fs.renamesync(oldpath, newpath)
但是:由於該方法屬於fs模組,使用前需要引入fs模組(var fs= require(「fs」) )

接收引數:(兩個)oldpath——原路徑       newpath——新路徑

也就是在實現上傳功能後,必須使用fs.renamesync(oldpath,newpath)的方法把原檔名改成「時間戳.字尾」的形式,這樣子才算完成整個檔案長傳功能。

(三)集中趨勢

學習集中趨勢的三種量度 均值 中位數和眾數。下圖是護理專業薪資和地理專業薪資的頻率分布,假設這些直方圖是使用護理或地理專業的所有人的資料而建立的,x 軸代表其年收入,單位是千美元,從這些分布中,大多數護理專業 畢業生,nursing majors 的收入大概是多少?大多數地理專業 畢業生,geogr...

孝莊秘史第三集

大玉兒 是啊,我們蒙古人當它是神明的化身呢!大玉兒突然鄭重地捧著自己的小護身符,拜了拜敖包,繞著敖包念念有詞地走一圈,又從地上撿了一塊小石頭,恭敬地堆到原有的石堆上,神色莊嚴。多爾袞瞪著眼睛問 你在做什麼?大玉兒微笑道 許願啊!多爾袞好奇地 許了什麼心願?大玉兒睨了多爾袞一眼 不告訴你!多爾袞詫異地...

Druid系列《三》集群

集群配置的規劃需要根據需求來定製,下面以乙個開發環境機器搭建為例,描述如何搭建乙個有ha特性的druid集群.集群部署有以下幾點需要說明 1.為了保證ha,主節點部署兩台 2.管理節點與查詢節點可以考慮多核大記憶體的機器 部署規劃 角色 機器 配置 集群角色 主節點10.5.24.137 8c16g...