目前分類:ASPnet資料庫網站 (33)

瀏覽方式: 標題列表 簡短摘要

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

prague12 發表在 痞客邦 留言(0) 人氣()

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

prague12 發表在 痞客邦 留言(0) 人氣()

這裡採用 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

prague12 發表在 痞客邦 留言(0) 人氣()

參考:
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" 就可以了!

prague12 發表在 痞客邦 留言(0) 人氣()

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
裝訂:平裝

prague12 發表在 痞客邦 留言(0) 人氣()

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

prague12 發表在 痞客邦 留言(0) 人氣()

  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

prague12 發表在 痞客邦 留言(0) 人氣()

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

prague12 發表在 痞客邦 留言(0) 人氣()

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

prague12 發表在 痞客邦 留言(0) 人氣()

WebSite模式是將profile的properties 建立成一個Strongly Type(強型別
可是專案模式下 這個功能會失效 不會自動建立強型別

所以 要用profile功能
需要用 檔案>> 開啟網站>> WebSite模式

















======================================

有個不好用的解決方法 如連結
http://anita-lo.blogspot.com/2008/11/aspnet-profile.html

prague12 發表在 痞客邦 留言(0) 人氣()

#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

prague12 發表在 痞客邦 留言(0) 人氣()

這個是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"));
    }
}

prague12 發表在 痞客邦 留言(1) 人氣()

關於使用 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

prague12 發表在 痞客邦 留言(0) 人氣()

«12