ASP無組件上傳圖片的基本方法

來源:互聯網
上載者:User
上傳|上傳圖片|無組件   下面是ASP無組件上傳圖片的一個例子:

  <html>
  <head><title>檔案上傳</title></head>
  <body>
  <form enctype="multipart/form-data" action="upload.asp" method="post">
  請選擇要上傳的檔案: <br>
  <input name="picture" type=file accept="image/*"><br>
  <input type=submit value="上傳"></form>
  </body>
  </html>

  當html檔案在Netscape Navigator(3.0以上版本)或Internet Explorer(4.0以上版本)下顯示時,“瀏覽”鍵旁邊會出現一個看上去很普通的文字框。使用者可直接將檔案名稱鍵入文字框,或用“瀏覽”鍵從檔案對話方塊中選擇一個檔案。提交該表單時,使用者所選檔案被同時提交。
  <form>標籤的enctype特徵規定了請求表單資訊的編碼類別型。表單資訊一般採用URL編碼制。不過上傳檔案時,必須用enctype="multipart/form-data"特徵。
  實際的檔案上傳鍵用下面的標籤建立:
  <input name="picture" type=file accept="image/*">
  因為type的特徵值是file,所以瀏覽器會建立一個檔案上傳鍵。accept特徵限制了在檔案對話方塊中出現的特定檔案,這種情況下檔案類型限制為圖檔案。可以規定任何MIME類型的清單作為accept的特徵值。
  檔案上傳鍵非常有用,遺憾的是許多瀏覽器只是部分支援上傳鍵。例如Netscape Navigator(3.0及4.0版本)忽略了accept特徵,IE 3.0版本甚至更差,它完全不能解釋上傳鍵,而是顯示普通的文字框。不過IE 4.0和5.0版本可識別檔案上傳鍵。
  建立帶檔案上傳鍵的html表單只是上傳檔案的第一步,提交帶上傳鍵的檔案不能用request對象的普通方法獲得檔案內容。ASP中request對象有專門用作此目的的特殊方法。當表單被郵遞後,request對象的BinaryRead()方法用來讀取提交的原始位元組。注意:一旦在ASP中使用了BinaryRead()方法,就不能用普通的Request.Form()方法擷取表單資料了(反之亦然)。
  假定使用者使用前面提到的表單提交了一幅圖片,那麼可以用下面的指令碼擷取並顯示提交的原始位元組。

  <%
  FormSize=Request.TotalBytes
  FormData=Request.BinaryRead(FormSize)
  Response.BinaryWrite FormData
  %>

  上面的指令碼用Request對象的TotalBytes特徵擷取送入http網站的位元組數。然後,所有的表單資料被賦給名為FormData的變數。最後用Response對象的BinaryRead()方法輸出上傳的資料內容。
  但是用這種方法輸出的指令碼不是完全可讀的,它包含上傳檔案的所有未經處理資料及有關該檔案內容的重要訊息。
  得到資料後可以儲存在資料庫中、檔案中或僅僅顯示它,甚至可以快速地改變原始映像資料來建立定製映像。下面的指令碼去掉了檔案頭,並顯示作為映像在瀏覽器上傳的檔案。

  <%
  FormSize=Request.TotalBytes
  FormData=Request.BinaryRead(FormSize)
  bnCRLF=chrB(13) & chrB(10)
  Divider=LEFTB(FormData,INSTRB(FormData,bnCRLF)-1)
  DataStart=INSTRB(FormData,bnCRLF & bnCRLF)+4
  DataEnd=INSTRB(DataStart+1,FormData,divider)-DataStart
  Response.ContentType="image/gif"
  Response.BinaryWrite MIDB(FormData,DataStart,DataEnd)
  %>

  上面的指令碼用INSTRB()函數從表單資料中摘出圖象資料,找到起始位置。它假定圖象資料以兩個斷行符號和分行符號開始,並以同樣的分隔字元結束。然後用Response對象的ContenType規定送入瀏覽器的內容是GIF圖象。最後用BinaryWrite()方法輸出資料。圖片就顯示在瀏覽器上。
  上面的指令碼假定提交的表單只包含一個含有映像資料的域。不過包含檔案上傳元素的html表單還可包含其他標準元素,例如文字框、文本區等。
  儘管可以用標準的ASP指令碼處理複雜的表單,但最好還是使用第三方ASP組件,可以用與處理標準html表單的相同方法,處理包含檔案上傳元素的表單。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.