http://www.dotblogs.com.tw/puma/archive/2008/10/17/5713.aspx
Protected Sub Button_dropdownlist_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_dropdownlist.Click
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\WebApplication_mem1\WebApplication_mem1\App_Data\Database_news.mdf;Integrated Security=True;User Instance=True"
conn.Open()
Dim cmd = "INSERT INTO news1 (name, contents, time, pic_url,ip) VALUES (@name,@contents,@time,@pic,@ip)"
'----sqlAdapter + sqlcommand -----------------
Dim myAdapter As New SqlDataAdapter '定義一組橋接器
Dim sql_cmd As New SqlCommand(cmd, conn) '定義sql_cmd 動作電源器(sql命令,連線字串)
myAdapter.SelectCommand = sql_cmd ' sql_cmd動作電源器 插上 橋接器myAdapter >>以用來作"萬用 Fill"
'--------/sqlAdapter + sqlcommand/--------------------
'------sql安全參數給法-------------
' sql_cmd.Parameters.AddWithValue("@pic", TextBox1.Text + "http://PIC.jpg") '動作電源器加入 安全sql參數
sql_cmd.Parameters.Add("@pic", SqlDbType.NChar).Value = TextBox1.Text
sql_cmd.Parameters.AddWithValue("@name", TextBox2.Text) '動作電源器加入 安全sql參數 '/寫法1
'sql_cmd.Parameters.Add("@name", SqlDbType.NChar).Value = TextBox2.Text ' /寫法2
sql_cmd.Parameters.AddWithValue("@contents", TextBox3.Text + "Adapter~") '動作電源器加入 安全sql參數
sql_cmd.Parameters.AddWithValue("@time", TextBox4.Text) '動作電源器加入 安全sql參數
sql_cmd.Parameters.AddWithValue("@ip", TextBox5.Text) '動作電源器加入 安全sql參數
'--------/sql安全參數給法/-----------
'----------Adapter執行sqlcmd----------------------------
Dim dss As New DataSet
'--------Select查詢動作2-----------
' sql_cmd.CommandText = "DELETE FROM news1" '刪除
sql_cmd.CommandText = "SELECT news1.* FROM news1" '查詢
myAdapter.SelectCommand = sql_cmd
myAdapter.Fill(dss) '遠端執行Select, 這種"有"回傳資料給本地 DatSet > dss
GridView2.DataSource = dss '有資料 傳送給 資料表格來源 在本機記憶體裡
If dss.Tables.Count > 0 Then '可以測試insert >> "的確有"回傳資料給 ds
GridView2.DataBind() '更新網頁容器GridView2
dss.Clear()
End If
'--------/Select查詢動作2/-----------
'----------/Adapter執行sqlcmd/---------------------
Dim cc = GridView2.Rows.Count
d1.Items.Add(cc.ToString)
For Each mm As GridViewRow In GridView2.Rows
Dim str1 = mm.Cells(0).Text
Dim str2 = mm.Cells(1).Text
Dim str3 = mm.Cells(2).Text
Dim str4 = mm.Cells(3).Text
Dim str5 = mm.Cells(4).Text
Dim str_all = str1 + str2 + str3 + str4 + str5
d1.Items.Add(str_all)
Next
' Response.Redirect("~/news2.aspx")
' Server.Transfer("~/news2.aspx")
End Sub
目前分類:ASPnet資料庫網站 (33)
- Nov 18 Thu 2010 16:15
VB2008~讀取Gridview的欄位CELL
- Nov 08 Mon 2010 03:23
Gmail轉信之To_email_messag
Dim selectN, address, name As String
Dim ordertime
Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick
selectN = ListBox1.SelectedItem.Text.ToString
address = TextBox_address.Text
name = TextBox_name.Text
ordertime = Calendar1.TodaysDate.ToString
Dim optionN = ListBox1.SelectedIndex + 1 '訂購選項
Dim tt1 = "訂購數量 " + selectN + vbNewLine
Dim tt2 = "訂購人 " + name + vbNewLine
Dim tt3 = "送貨地址 " + address + vbNewLine
Dim tt4 = "訂貨時間" + ordertime + vbNewLine
Dim all_tt = tt2 + tt3 + tt1 + tt4
TextBox_sum.Text = all_tt
Dim k1, k2, k3, k4 As Integer
Dim money As Integer
Dim process_YN As String
k1 = optionN
k2 = 0
k3 = 0
k4 = 0
money = (k1 + k2 + k3 + k4) * 100
Dim money_str = money.ToString()
process_YN = "N"
Dim ww As New order_DataSet1TableAdapters.Table_OrderTableAdapter
' ww.Insert(ordertime.ToString, name.ToString, address.ToString, k1.ToString, k2.ToString, k3.ToString, k4.ToString, money.ToString, processYN.ToString)
' Dim aaqq As String = "RR" '測試寫入資料用
ww.Insert(ordertime, name, address, k1, k2, k3, k4, money_str, process_YN)
'Dim wwwqq As New order_DataSet1TableAdapters.jk_Table2TableAdapter 測試用
Dim result = To_email_message(TextBox_mail.Text, "這是通知 您訂購的內容是
" + all_tt, ordertime)
Response.Write(result)
End Sub
Public Function To_email_message(ByVal receiver_of_Email As String, ByVal contentBODY As String, ByVal time As String) As String
Try
Dim mailTo_address As String = TextBox_mail.Text
Dim mail As New Mail.MailMessage()
Dim pwd As String = "net111111"
Dim receiver_cred As New NetworkCredential("shcgprague@gmail.com", pwd)
' Dim receiverTest As String
'receiverTest = "hcgprague@hotmail.com," + "prague12.tw@yahoo.com.tw"
'收件者
mail.To.Add(receiver_of_Email)
'mail.Subject = "subject gmail_test "
mail.Subject = "有新訂購" + time
'寄件者
mail.From = New System.Net.Mail.MailAddress("fff@gmail.com")
mail.IsBodyHtml = True
mail.Body = "messageAAAA content 中文也要來一下 " + vbNewLine + contentBODY
'設定SMTP
Dim smtp As New Mail.SmtpClient("smtp.gmail.com")
smtp.UseDefaultCredentials = False
smtp.EnableSsl = True
smtp.Credentials = receiver_cred
smtp.Port = 587
'送出Mail
smtp.Send(mail)
Return ("send EMAIL OK")
Catch ex As Exception
Return ("send EMAIL FAIL")
End Try
End Function
- Nov 08 Mon 2010 03:08
sqlAdapter_加參數_萬用Fill
這裡採用 sqlAdapter 配合SqlCommand作萬用fill 'jk測試ok
1.作 安全參數
2.配合myAdapter.SelectCommand 作 萬用Fill(sql動作cmd)
ex:
Select
Insert
Delete
'//----------------------------------------------------------------
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\WebApplication_mem1\WebApplication_mem1\App_Data\Database_news.mdf;Integrated Security=True;User Instance=True"
conn.Open()
Dim cmd = "INSERT INTO news1 (name, contents, time, pic_url,ip) VALUES (@name,@contents,@time,@pic,@ip)"
'----sqlAdapter + sqlcommand -----------------
Dim myAdapter As New SqlDataAdapter '定義一組橋接器
Dim sql_cmd As New SqlCommand(cmd, conn) '定義sql_cmd 動作電源器(sql命令,連線字串)
myAdapter.SelectCommand = sql_cmd ' sql_cmd動作電源器 插上 橋接器myAdapter >>以用來作"萬用 Fill"
'--------/sqlAdapter + sqlcommand/--------------------
'------sql安全參數給法-------------
' sql_cmd.Parameters.AddWithValue("@pic", TextBox1.Text + "http://PIC.jpg") '動作電源器加入 安全sql參數
sql_cmd.Parameters.Add("@pic", SqlDbType.NChar).Value = TextBox1.Text + "http://PIC.jpg"
sql_cmd.Parameters.AddWithValue("@name", TextBox2.Text + "HCG") '動作電源器加入 安全sql參數 '/寫法1
'sql_cmd.Parameters.Add("@name", SqlDbType.NChar).Value = TextBox2.Text + "HCG" ' /寫法2
sql_cmd.Parameters.AddWithValue("@contents", TextBox3.Text + "HEY YOYO!!~") '動作電源器加入 安全sql參數
sql_cmd.Parameters.AddWithValue("@time", TextBox4.Text) '動作電源器加入 安全sql參數
sql_cmd.Parameters.AddWithValue("@ip", TextBox5.Text) '動作電源器加入 安全sql參數
'--------/sql安全參數給法/-----------
'----------Adapter執行sqlcmd----------------------------
Dim dss As New DataSet
'--------Insert動作1-----------
myAdapter.Fill(dss) '遠端執行insert, 這種"沒有"回傳資料給本地 DatSet > dss
GridView2.DataSource = dss '沒有資料 傳送給 資料表格來源 在本機記憶體裡
If dss.Tables.Count > 0 Then '可以測試insert >> "的確沒有"回傳資料給 ds
GridView2.DataBind() '更新網頁容器GridView2
dss.Clear()
End If
'--------/Insert動作1/-----------
'--------Select查詢動作2-----------
' sql_cmd.CommandText = "DELETE FROM news1" '刪除
sql_cmd.CommandText = "SELECT news1.* FROM news1" '查詢
myAdapter.SelectCommand = sql_cmd
myAdapter.Fill(dss) '遠端執行Select, 這種"有"回傳資料給本地 DatSet > dss
GridView2.DataSource = dss '有資料 傳送給 資料表格來源 在本機記憶體裡
If dss.Tables.Count > 0 Then '可以測試insert >> "的確有"回傳資料給 ds
GridView2.DataBind() '更新網頁容器GridView2
dss.Clear()
End If
'--------/Select查詢動作2/-----------
'----------/Adapter執行sqlcmd/---------------------
End Sub
- Oct 19 Tue 2010 01:07
錯誤訊息 BC30456:
參考:
http://blog.yam.com/highscope/article/24494198
編譯OK
發行網站也OK
送到server執行就不OK了 ...= =
錯誤訊息如下:
BC30456: “InitializeCulture”不是“ASP.default_aspx”的成員。
猜測造成這個錯誤的原因是因為..
編譯OK
發行網站也OK
送到server執行就不OK了 ...= =
錯誤訊息如下:
BC30456: “InitializeCulture”不是“ASP.default_aspx”的成員。
猜測造成這個錯誤的原因是因為..
曾經將網頁更名(Default.asp),
導致在.asp.vb部分,有兩個相同名稱的class(inherits="_Default")
解決方法如下:
發行網站時,
不要勾選 "allow this precompiled site to be updatable" 就可以了!
- Oct 16 Sat 2010 22:51
IIS5.1 for XP_sp2 aspx +php
XP_sp2
IIS for aspx
==============
1.
使用xp xp2 的OS時 所搭配的 IIS5.1 要從XPSP2的光碟去搜索來安裝才會正常
(使用SP3的XP光碟的IIS也能安裝程光,但IIS無法正常啟動 錯誤訊息:沒回應)
2.
如果先裝.net FRAMEWORK 再裝IIS ,IIS會無法解讀.aspx
要做一下重新設定的動作
照著下面打,真的ok了
vs2008命令提示字元
C:\Windows\Microsoft.NET\Framework\v2.0.50727> aspnet_regiis -i
C:\Windows\Microsoft.NET\Framework\v2.0.50727> aspnet_regiis -r
C:\Windows\Microsoft.NET\Framework\v2.0.50727> aspnet_regiis -c
可參考
http://social.msdn.microsoft.com/forums/zh-TW/236/thread/5d5b558e-2ee9-4763-b424-5f894f61fd02
http://blog.xuite.net/sunnysoap/r/18067032
------------------
IIS+PHP
jkfix: 要將IIS加入一個參考檔 C:\AppServ\php\sapi\php4isapi.dll
-------------------------
參考:
我架站比你行--誰說快速架站一定要用 Linux(附VCD)
作者:曹志彬
出版社:知城
出版日期:2009年03月01日
語言:繁體中文 ISBN:9789866551215
裝訂:平裝
- Oct 14 Thu 2010 06:03
ASP+mySQL+gridview
ASP+mySQL+gridview
JK: 如果照下程式碼跑還是沒反應>> 先把gridview1元件刪掉 再重新放入元件 應該就會正常了
=======================
Imports MySql.Data.MySqlClient
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'------設定連線字串-------------
Dim pubsSQLConn As New MySqlConnection("server=140.115.222.83;user id=op1;pwd=op1;database=db_op1;port=3306;CharSet=utf8;") 'mysqlport=3306
'連線字串第二種寫法 測試兩種連線字串都可以成功
' Dim pubsSQLConn As MySqlConnection = New MySqlConnection("Database=db_op1; Data Source=140.115.222.83; User Id=op1; Password=op1; CharSet=utf8;")
'--------/設定連線字串/-------------
Dim cmd_select = "SELECT * FROM `gis_research` " '命令動作
pubsSQLConn.Open() '使用連線
' MsgBox(pubsSQLConn.State) '提示連線狀態
'-------法1 : 每欄讀取-----------------
' Dim cmd As New MySqlCommand(cmd_select, pubsSQLConn)
'Dim DBreader = cmd.ExecuteReader ' 讀取資料
'Dim tt = DBreader.GetSchemaTable ' 測試 >>沒有收到Dataset
'Dim a, b, c
'While (DBreader.Read()) '當還沒讀完 >>一次讀一個ROW的欄位
' a = DBreader.GetString(0) '欄位1
' b = DBreader.GetString(1) ''欄位2
' c = DBreader.GetString(2) ''欄位3
'End While
'--------------/每欄讀取/-------------
'--法2:-------整表讀取------------
Dim myDataAdapter = New MySqlDataAdapter(cmd_select, pubsSQLConn)
Dim myDs As New DataSet
Dim mytb As New DataTable
myDataAdapter.Fill(myDs)
myDataAdapter.Fill(mytb)
GridView1.DataSource = myDs
'第二種寫法 用tb當給gridview1當來源 結果會相同
' GridView1.DataSource = mytb
'--/法2:-------整表讀取/------------
GridView1.DataBind() ' 表格網頁更新 這個一定要有 不然網頁沒反應
pubsSQLConn.Close()
End Sub
End Class
- Aug 26 Thu 2010 22:31
Dataset+TableAdapter+Listview
Protected Sub Button1_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' 強型別的Dataet+ TableAdapter + Listview (.net3.5 好用組合)
'----------------------------------------------
Dim tablejk As New vote_DataSetTableAdapters.vote_1TableAdapter
Dim content_new = TextBox_putin.Text
tablejk.Insert("A1", content_new, CInt(1), CInt(2), CInt(3), CInt(4)) 'Insert是自動產生的邏輯函數
'Dim GridViewjk As New GridView '(似乎不能搭配gridview)
' GridViewjk.DataSource = aaa.GetDataBy_clas("A1") '會失敗沒反應
' GridViewjk.DataBind()
'邏輯函數在TableAdapter工具可以另外精靈化產生語法函數~
ListView1.DataSource = tablejk.GetDataBy_clas("A1") 'GetDataBy_clas是自訂邏輯函數
ListView1.DataBind()
ListView2.DataSource = tablejk.GetData_IP(TextBox1.Text)
ListView2.DataBind()
End Sub
- Aug 19 Thu 2010 00:20
vb2008~SqlDataAdapter語法
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim conn_str = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\jk1db.mdf;Integrated Security=True;User Instance=True"
Dim Conn As New SqlConnection(conn_str)
' Conn.Open() '使用adapter 可以不用事先open ,ADAPTER會自己 open 和 close
Dim cmd_str_insert = " INSERT INTO [Table1] ([name], [pwd]) VALUES ('BBB', '777')"
Dim cmd_str_select = "select * from Table1"
'--------------------------------------------------
Dim ds As New DataSet
' Dim myAdapter As SqlDataAdapter = New SqlDataAdapter(cmd_str_insert, Conn) 'SqlDataAdapter(SQL命令,連線)
'myAdapter.Fill(ds) '--遠端執行SQL指令insert ,這實際上沒有回傳資料表 所以本地 DataSet ds 還是空的
Dim myAdapter2 As SqlDataAdapter = New SqlDataAdapter(cmd_str_select, Conn) 'SqlDataAdapter(SQL命令,連線)
myAdapter2.Fill(ds) '遠端執行select,並且回傳資料給本地 DatSet > ds
'-------------------------------
GridView_adapter.DataSource = ds '傳送給 資料表格來源 在本機記憶體裡
If ds.Tables.Count > 0 Then '可以測試insert 的確沒有回傳資料給 ds
GridView_adapter.DataBind() '綁到網頁畫面上去
End If
End Sub
- Aug 19 Thu 2010 00:15
VB2008~SqlDataSource1控制項語法
SqlDataSource 是在sqlAdapter之後的新控制項 有個天生的限制,就是只能執行單一批次。 如果你要執行二個以上的 SQL statement,請把它寫成 stored procedure。 不然,就乾脆別用 SqlDataSource 了(只用 SqlDataAdapter, SqlCommand 來保持高度的彈性)
//-------------------
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ds As New DataSet
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\jk1db.mdf;Integrated Security=True;User Instance=True"
conn.Open()
'----------一些sql 的動作語法-----------查詢 ,寫入--------
'SqlDataSource1.InsertCommand = " INSERT INTO [Table1] ([name], [pwd]) VALUES ('UUU', '999')"
SqlDataSource1.InsertParameters.Add("name_str", TextBox1_.Text) 'sql變數 給法
SqlDataSource1.InsertParameters.Add("pwd_str", "888") 'sql變數 給法
SqlDataSource1.InsertCommand = " INSERT INTO [Table1] ([name], [pwd]) VALUES (@name_str, @pwd_str)"
SqlDataSource1.Insert()
' SqlDataSource1.InsertParameters.Add("name_str", TextBox1_.Text) 'sql變數 給法
' SqlDataSource1.InsertParameters.Add("pwd_str", "888") 'sql變數 給法
' Dim cmd_str_select = "select * from Table1"
'SqlDataSource1.SelectCommand = cmd_str_select
conn.Close()
End Sub
- Aug 12 Thu 2010 22:56
profile 自動功能
WebSite模式是將profile的properties 建立成一個Strongly Type(強型別
可是專案模式下 這個功能會失效 不會自動建立強型別
所以 要用profile功能
需要用 檔案>> 開啟網站>> WebSite模式
======================================
有個不好用的解決方法 如連結
http://anita-lo.blogspot.com/2008/11/aspnet-profile.html
- Aug 11 Wed 2010 17:12
Aspnet~失敗的範例_連線自訂會員資料庫
#6 |自訂 Login 控制項之事件處理
http://msdn.microsoft.com/zh-tw/cc835114.aspx
其中webconfig有一段要修改成不用預設的資料庫 改用自訂的資料庫
可是影片沒有清楚說明要怎麼改 卡在這點上
以下程式碼會在一開始取得連線字串出錯~~~~
//程式碼是jk邊看影片邊打出來的
//--------------------------------------------------
Imports System.Data.SqlClient
Imports System.Web.Configuration
Partial Public Class login
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
Dim datasql As String
Dim www = WebConfigurationManager.ConnectionStrings("jk1db").ConnectionString
Dim connecter As New SqlConnection(datasql)
connecter.Open()
' Dim cmdstr = "Select name FROM Table1 WHERE (name = N'aaa')"
Dim cmdstr = "Select name FROM Table1 WHERE name = @paramID And password=@paramPW"
' Dim sqlcmd As New SqlCommand(cmdstr)
Dim sqlcmd As New SqlCommand(cmdstr, connecter)
sqlcmd.Parameters.Add("@paramID", SqlDbType.VarChar, 10).Value = Login1.UserName
sqlcmd.Parameters.Add("@paramPW", SqlDbType.VarChar, 10).Value = Login1.Password
Dim txt_chk As String = Nothing
Try
txt_chk = sqlcmd.ExecuteScalar() '執行查詢動作
Catch ex As Exception
Finally
sqlcmd.Dispose()
connecter.Close()
connecter.Dispose()
End Try
'------------------------------------
If Not String.IsNullOrEmpty(txt_chk) Then
e.Authenticated = True
MsgBox("OK")
Else
e.Authenticated = False
MsgBox("fail")
End If
'--------------------------------------------------
End Sub
End Class
- Jun 27 Sun 2010 21:32
Asp_VB2008~使用 WebClient 的URL下載動作
這個是JK改寫的 使用 WebClient 的網路URL下載動作
參考自: http://blog.darkthread.net/blogs/darkthreadtw/archive/2008/11/26/3660.aspx#3860
Protected Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
Dim rootPath = HttpContext.Current.Request.MapPath("~/") '取得當前目錄PATH
Dim url = "http://l.yimg.com/f/i/tw/hp/mh/09purple.gif" '欲下載圖的連結URL
Dim client As New WebClient()
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
' Add a user agent header in case the requested URI contains a query.
'-----------------------
'寫法1(簡易): '下載回來放的位置是一個指定的位置 (這是一般客戶端的下載動作)
' client.DownloadFile(url, "c:/aaa.gif") 'JK:要給它放置下載回來的檔案的絕對路徑名稱
'-------------------------------
'寫法2(仔細): '下載回來的位置會是網站的根目錄內(也就是伺服器端的主目錄,這作法是SERVER去下載URL的意思)
Dim floderPath = "download/setfilename.gif"
Dim savePath = rootPath & floderPath
client.DownloadFile(url, savePath) '要給它放置下載回來的檔案的絕對路徑名稱
MsgBox("OK" + savePath)
'---------------------------------------
End Sub
//================================
進階
webClient 是以下http Request 和 Response 的組成
參考自: http://blog.darkthread.net/blogs/darkthreadtw/archive/2008/11/26/3660.aspx#3860
using System;
using System.IO;
using System.Net;
public class CSharpLab
{
public static void Test()
{
string url = "http://blog.darkthread.net/images/darkthreadbanner.gif";
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
System.IO.Stream dataStream = httpResponse.GetResponseStream();
byte[] buffer = new byte[8192];
FileStream fs = new FileStream("X:\\TEMP\\Darkthread.gif",
FileMode.Create, FileAccess.Write);
int size = 0;
do
{
size = dataStream.Read(buffer, 0, buffer.Length);
if (size > 0)
fs.Write(buffer, 0, size);
} while (size > 0);
fs.Close();
httpResponse.Close();
Console.WriteLine("Done at " + DateTime.Now.ToString("HH:mm:ss.fff"));
}
}
- Jun 27 Sun 2010 00:29
ASP_webclien 上傳檔案
關於使用 webclient 上傳整個檔案 的方法
JK整理分為兩步
步驟1.用戶端 使用webclient.upfile 上傳
步驟2.伺服端 要在PageLoad更新去找Request.File 重新取得上一輪的POST"file"項再做檔案轉存的動作
參考:http://hi.baidu.com/zhgx/blog/item/7110051f839c9acfa78669df.html/cmtid/7110051faa69f3c4a6866969
關於步驟1.
Protected Sub Button5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button5.Click
Dim rootPath = HttpContext.Current.Request.MapPath("~/") '取得當前目錄PATH
Dim url = "http://l.yimg.com/f/i/tw/hp/mh/09purple.gif" '欲下載圖的連結URL
Dim client As New WebClient()
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
' Add a user agent header in case the requested URI contains a query.
' 上傳檔案 寫法
'===========================================================
Dim floderPath = "download/setfilename.gif"
Dim floderPath2 = "download/11.jpg"
Dim savePath = rootPath & floderPath
Dim savePath2 = rootPath & floderPath2
Dim upURL = "http://localhost:3695/Default.aspx" '注意: 一定要針對當前那個網頁才能POST成功
Dim rr1 = client.UploadFile(upURL, "POST", savePath) '要給它放置下載回來的檔案的絕對路徑名稱 傳第1張圖
Dim rr2 = client.UploadFile(upURL, "POST", savePath2) '傳第2張圖 (會有回傳訊息通知 可以不理)
' Dim sss = Encoding.UTF8.GetString(rr) JK:解出成字串 可以看傳輸回應的訊息
' MsgBox("OK" + sss)
'---------------------------------------
End Sub
關於步驟2.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim now_str = String.Format("{0}", Now.ToString("yyyyMMddhhmmss")) '只是為了製造會變動的檔名
Dim rootPath = HttpContext.Current.Request.MapPath("~/") '取得當前目錄PATH
Dim floderPath = "upload/"
Dim savePath = rootPath & floderPath
'相當於 savePath = c:/upload/
Dim f As String = ""
'--------------------------------------------------
'根據JK測試 Request.Files.AllKeys 是一個陣列值 但是陣列內包含了3個file項
'所以for each 會跑三次 會存出三個不同檔名圖 可證明之
'至於Request 為什麼有三個file項 >跟用戶端網頁的POST有關
' 1. 控制項 post1 "fileupload1" (存圖是空白) 2. webclient post2 "file" (存圖A) 3. webclient post3 "file" (存圖B)
'----------------------------------------------
For Each f In Request.Files.AllKeys '取得type "file"的陣列字串 (看上一輪Request> POST了幾個過來)
Dim file = Request.Files(f)
file.SaveAs(savePath + now_str + ".bmp")
Threading.Thread.Sleep(1200) '為了讓檔名根據當前秒數變動要等一下下
Next
End Sub