剩下最後兩天,我決定分享一下 FileUpload與資料庫的整合範例
這算是一個初學者很常遇見、很常發問的FAQ
通常有兩種解法(抉擇):
第一,檔案上傳後,把檔案存入「資料庫」
這種作法,把檔案的內容(二進位)存入資料庫,除了程式不好寫,日後要取出也不容易
第二,上傳後,把檔案存入「Web Server的硬碟」,把路徑與檔名存入資料庫
這種作法超簡單!存入資料庫的路徑與檔名,只是簡單的純文字罷了!
但不管怎麼好言相勸,初學者都會一頭鑽入第一種解法(最難的!)
所以.....生命有很多出路,你還有別的路可以走
第一次想到的解法,總是最難!最好不實踐!(這是我上課時最常說的話,最想送給初學者的一句建議)
那麼,我們反過來解說:我今天先介紹「第二種」解法,簡單易懂!
請看 YouTube的教學影片 -- https://youtu.be/ET3YsBlu4LU
第一,我們先設計一個 Table,在此我用來存放「上傳的 "圖片檔名"」。
唯一要修改的地方,就是 -- 上傳成功(.SaveAS()方法)之後,
放一段 ADO.NET程式,把「圖片檔名」新增到資料表裡面。
(我想,這是比較難的地方。因為大部分初學者根本不看 ADO.NET那兩章的範例與教學的)
最簡單的新增一筆記錄,採用 DataReader,搭配 SqlCommand的 .ExecuteNonQuery() 方法即可
第二,利用 ListView + SqlDataSource
把你剛剛上傳的圖片,展示出來即可。
這裡也有一個重點,就是 Image控制項裡面的 ImageURL屬性,必須使用 [字串 + 資料繫結運算式]
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "~/ASP.NET專題實務/Uploads路徑/" + Eval("資料表的某一個欄位名稱") %>' />
這裡的路徑,是URL網址。 ~符號代表網站的 "根"目錄!
如果您需要文字說明與程式碼,我另外撰寫一些文章作為補充:
FileUpload上傳之後,把圖片檔名存進DB #1 -- 觀念、資料表設計、ADO.NET程式
https://dotblogs.com.tw/mis2000lab/2011/09/22/fileupload_picture_db_insert
下一篇文章:
檔案上傳後,把檔案存入「資料庫」
http://ithelp.ithome.com.tw/articles/10188403