初階版的線上相簿終於寫完了,之所以用初階版來形容,真的是因為很陽春,雖然有點差強人意,但尚可使用,等有時間實在繼續寫吧!簡單的敘述一下撰寫的過程及想法。 首先是檔案上傳的部份,因為檔案在上傳時可能會碰到檔案名稱一樣的問題(如果懶惰一點的話,其實可以先自己編好檔案名稱後在上傳,就部會有這樣的問題,可是這樣太遜了),所以必須先克服檔案名稱相同的問題,常見的方法幾乎是用日期及時間的組合來作控制,例如2006年9月07日20:10:10,則檔案名稱20060907201010.xxx,如此已經將檔案名稱相同的變數縮到1秒鐘,即可有效避免檔案名稱相同的問題,因為上傳檔案時只有筆者一位,所以也可以避免同一秒鐘有二位以上的使用者上傳檔案,如果還要在更有效區隔,也可以加上user id或random出一些數字及英文字可以更有效的避免檔案名稱相同的問題。 第二則是相片歸類(相簿)的問題,最容易的方法即是用一個資料表(table)來作管理,這樣就可以無限擴充,如表二所示。 第三則是相片的呈現方式,縮圖頁面的設計(一覽表),一頁要輸出(post)張比較好呢?其實這並沒有固定的答案,因為筆者認為必須依照伺服器(server)的網路頻寬及clinet端的頻寬而定,所以數量是可以隨意改變。 第四點是檔案上傳時,除將相片上傳至伺服器外,另外還必須將照片資料寫進資料庫,所以上傳時必須要同時完成2道程序;而刪除照片時則又必須將資料庫及伺服器照片刪除,如此才能讓資料庫及伺服器檔案同步,避免垃圾檔的產生。 另外最後一點則是單張照片的瀏覽的畫面,筆者選擇一次瀏覽2張照片的方式設計,而照片大小則設定在300x200像素(所以在上傳相片以前必須先改變相片大小)。
表一:相片資料表(紀錄檔案資訊)Field | Type | Allow Null | Default Value | id | int(3) | No |
| photo_label_id | int(3) | No | 0 | content | tinytext | No |
| user_id | int(3) | No | 0 | date | datetime | No | 0000-00-00 00:00:00 | ip | varchar(16) | No |
| file_kind | int(1) | No | 0 | location | varchar(60) | Yes |
| hit_time | int(3) | No | 0 | 表二:相簿名稱的資料表(紀錄相簿種類) Field | Type | Allow Null | Default Value | id | int(3) | No |
| user_id | int(11) | No | 0 | make_date | datetime | No | 0000-00-00 00:00:00 | name | char(30) | No |
| hit_time | int(3) | No | 0 |
未來要完成的事項: - 上傳時,使用GD功能,將照片大小挑整至筆者想要的大小。
- 單張照片瀏覽畫面,希望修改為一大張二小張的畫面。
|