六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

文件上傳之后

[摘要]大家經常會利用上傳組件上傳文件嗎?你的空間是否足夠大,以至于可以不考慮冗余文件的處理?這里所說的冗余文件,是指用戶修改信息或誤操作后,不再與信息關聯的文件,久而久之,這些文件會占用相當大的空間。 以下情況可能產生冗余文件: 1.用戶修改了原信息。 用戶可能在修改信息的同時更換了上傳文件,而被更換的...

大家經常會利用上傳組件上傳文件嗎?你的空間是否足夠大,以至于可以不考慮冗余文件的處理?這里所說的冗余文件,是指用戶修改信息或誤操作后,不再與信息關聯的文件,久而久之,這些文件會占用相當大的空間。
以下情況可能產生冗余文件:
1.用戶修改了原信息。
用戶可能在修改信息的同時更換了上傳文件,而被更換的文件留在了服務器上;
2.用戶在發布信息過程中操作失誤,系統提示錯誤,用戶返回后,上傳了與原文件不同的文件,原文件留在了服務器上;
3.刪除信息時未將與其關聯的上傳文件同時刪除。
為了在以上幾種情況出現時,都將冗余文件處理掉,我采取了一些可能有些繁瑣的辦法,但是為了可憐的空間,繁瑣就繁瑣點吧。以下辦法僅限于利用文件上傳組件的操作,如果是將文件存在庫里,希望也能有所參考。

先從上傳說起
上傳文件可能采取兩種方式:
1.信息入庫與文件上傳同時操作;
2.先讓用戶上傳文件,然后信息入庫;
我以前采用過第一種方法,后來再做此類功能的時候放棄了。它雖然可以將上傳文件的相關信息,如文件個數,文件名等與信息同時寫入庫中,但是缺點也很明顯,比如處理中出錯的可能性大大增加;允許用戶上傳多個文件時需加入多個<input type=file>循環處理,一處有錯,全部重來;如果用戶對不同文件的顯示位置有要求,處理較困難等等。
采用第二種辦法,可以對每次上傳單獨控制,但是需要把上傳的信息如
點擊瀏覽該文件用javascript寫回<textarea>,顯示的時候用UBB處理。我對js的可靠性不放心,但是魚與熊掌不可兼得,舍魚而取熊掌也。
這里插一下對文件上傳個數的控制,有些同學把上傳個數寫入庫表,或用session,我感覺都不夠靈活,比如用戶修改時,如何使上傳文件個數相應變化呢?得費些功夫。我的辦法是判斷<textarea>中[upload]...[/upload]的個數,用戶如想修改,從<textarea>刪去欲修改的[upload]...[/upload],可再上傳直至允許的個數。
上傳時,文件名一般用上傳時間加隨機數替換,這樣做有兩個目的,一是保證文件不重名,二是避免文件名中的非法字符造成上傳的文件無法正確顯示。
但是我把每一篇“文章”中上傳的文件,放在單獨的一個文件夾中,文件夾的名字也用時間加隨機數生成,這樣做是為了刪除文件時便于操作----只要刪掉一個文件夾就OK了,試想從相對較少的文件夾找到要刪掉的文件夾,與從一大堆文件中找到要刪除的文件相比,還是要省些功夫的。

下面針對可能產生冗余文件的操作,介紹我的做法:
1.刪除文件時。
上面說過了,只要刪掉與信息關聯的文件夾就可以了。
但是這個文件夾要寫到庫表中的,我是這樣做的:在信息發布的表單中設一個<input type=hidden name=filepath>,當上傳第一個文件時,生成文件夾名,[upload]寫回<textarea>的同時,文件夾名寫回filepath,每次上傳前判斷這個控件中是否有值,如有,就不再生成文件夾名了。這樣修改信息時,也可以保證文件上傳到原來的文件夾。
2.修改信息時。
在用戶修改信息時,前面說過,只要刪掉<textarea>中的[upload],就可上傳其它文件,但是原先上傳的(也就是用戶刪掉的[upload]所標識的)那個文件留在了服務器上。這時候,我遍歷filepath下的所有文件(這也是建文件夾的目的之一),判斷每個文件是否在<textarea>中,如果不在,將其刪除。簡單的辦法是直接查找<textarea>的字串中是否包含從文件夾中取得的文件名,如果嫌不保險,也可以利用正則表達式,取得<textarea>中[upload][/upload]中間的文件名,與文件夾中物理存在的文件名比較。
3.信息發布時。
用戶在發布信息時,可能預覽后對上傳的文件不滿意,返回去修改,這時候的操作跟上面一樣,也就是說,在發布時也要比對filepath中的文件名與<textarea>中的文件名。這樣當然會影響發布的速度,為了節省空間,只好以時間換空間了。
還有一種情況:用戶上傳了文件后,沒有來得及發布,關掉了瀏覽器,轉到了其它頁面,或是出現其它意外,這時候會造成站點空間中存在一個與任何信息不關聯的文件夾。為了處理這種情況,我加了一個表,在生成文件夾名的同時,將其存入這個表,信息發布的同時,再把它從表中刪去。這樣,那些“孤立”的文件夾就會留在新加的這個表中,管理員可以每隔一段時間將表中的文件夾刪除,清理一下這些“孤立”的文件夾。

采用以上辦法,只需要在表中記錄下文件夾名,而不用另外記錄上傳的文件名(文件名存在于信息正文中)。
當然,還存在其它的情況,比如在修改時,用戶上傳了新文件,然后關閉了瀏覽器,這時候在上傳文件夾中會出現冗余文件。但是我以上的處理,已經使出現冗余文件的可能性大大減小了,如果您覺得有必要,可以進行更細致,同時也是更繁瑣的處理:)


主站蜘蛛池模板: 真实国产乱子伦精品免费 | 日韩高清免费在线观看 | 在线国产一区二区 | 色吊丝国产永久免费网址 | 亚洲日韩中文第一精品 | 青青黄色 | 午夜在线亚洲男人午在线 | 天天狠狠色噜噜 | 影音先锋亚洲综合小说在线 | 婷婷综合久久中文字幕 | 日本一区二区视频免费播放 | 天天操天天操天天操天天操 | 色偷偷亚洲女性天堂 | 熟女毛片| 日韩午夜精品 | 五月天激情开心网 | 影音先锋国产资源 | 天天干在线影院 | 日韩一区二区久久久久久 | 一道本不卡视频 | 欧美视频日韩专区午夜 | 欧美在线视频导航 | 亚洲一区二区三区免费观看 | 亚洲精品天堂在线观看 | 亚洲黄色第一页 | 欧美亚洲国产专区在线app | 在线观看精品视频一区二区 | 日本免费一区二区三区看片 | 日本不卡免费高清一级视频 | 小明永久2015www永久免费观看 | 天天狠狠色噜噜 | 日韩视频www| 日韩18在线观看地址 | 日日夜夜拍 | 香蕉欧美成人精品a∨在线观看 | 日本一道本在线 | 午夜视频久久久久一区 | 亚洲ol| 亚洲91在线视频 | 亚洲狠狠婷婷综合久久久久图片 | 日韩 欧美 综合 在线 制服 |