Advertisement
2_2002-2004 Internet/ HTML #117965

Upload a file to an FTP using Winsock

It Uploads a file to an FTP using Winsock

AI

Riepilogo AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Codice sorgente
original-source
Dim Commun(5) As Com
Dim CommunState As Integer
Dim Site As String
Dim Username As String
Dim Password As String
Dim Remotefile As String
Dim Localfile As String
Dim Buffersize As Long
Dim CloseAfterSend As Boolean
Private Sub Command1_Click()
Site = ""
Username = ""
Password = ""
Localfile = "c:\windows\desktop\view.exe"
Remotefile = "/view.exe"
Commun(0).Reply = "220"
Commun(0).BackCommand = "USER " + Username
Commun(1).Reply = "331"
Commun(1).BackCommand = "PASS " + Password
Commun(2).Reply = "230"
Commun(2).BackCommand = "TYPE I"
Commun(3).Reply = "200"
Commun(3).BackCommand = "PORT"
Commun(4).Reply = "200"
Commun(4).BackCommand = "STOR " + Remotefile
Commun(5).Reply = ""
Commun(5).BackCommand = ""
Buffersize = 2920
Dim Nr1 As Integer
Dim Nr2 As Integer
Dim LocalIP As String
LocalIP = Winsock1.LocalIP
Do Until InStr(LocalIP, ".") = 0
LocalIP = Left(LocalIP, InStr(LocalIP, ".") - 1) + "," + Right(LocalIP, Len(LocalIP) - InStr(LocalIP, "."))
Loop
Randomize Timer
Nr1 = Int(Rnd * 12) + 5
Nr2 = Int(Rnd * 254) + 1
Commun(3).BackCommand = "PORT " + LocalIP + "," + Trim(Str(Nr1)) + "," + Trim(Str(Nr2))
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
Winsock2.LocalPort = (Nr1 * 256) + Nr2
Winsock2.Listen
Winsock1.Close
Do Until Winsock1.State = 0
DoEvents
Loop
Winsock1.RemoteHost = Site
Winsock1.RemotePort = 21
Winsock1.Connect
CommunState = 0
Do Until Winsock1.State = 7 Or Winsock1.State = 9
DoEvents
Loop
Select Case Winsock1.State
Case 9
MsgBox "Couldn't reach server " + Site + ".", vbOKOnly + vbInformation, "FTP Upper"
Case 7
Open Localfile For Binary As #1
End Select
End Sub
Private Sub Form_Load()
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim tmpS As String
Winsock1.GetData tmpS, , bytesTotal
Debug.Print tmpS;
Select Case Left(tmpS, 3)
Case Commun(CommunState).Reply
Winsock1.SendData Commun(CommunState).BackCommand + Chr(13) + Chr(10)
Debug.Print Commun(CommunState).BackCommand
CommunState = CommunState + 1
Case "150"
Do Until Winsock2.State = 7
DoEvents
Loop
SendNextData
Case "226"
Winsock1.Close
Do Until Winsock1.State = 0
DoEvents
Loop
MsgBox "Transfer complete.", vbOKOnly + vbInformation, "FTP Upper"
Case Else
MsgBox "Bad reply: " + Left(tmpS, Len(tmpS) - 2), vbOKOnly + vbInformation, "FTP Upper"
End Select
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
Winsock2.Accept requestID
Do Until Winsock2.State = 7
DoEvents
Loop
End Sub
Sub SendNextData()
Dim Take As Long
Dim Buffer As String
If LOF(1) - Seek(1) < Buffersize Then Take = LOF(1) - Seek(1) + 1 Else Take = Buffersize
Buffer = Input(Take, 1)
Winsock2.SendData Buffer
If Take < Buffersize Then
Close #1
CloseAfterSend = True
End If
On Error Resume Next
Label1 = Trim(Str(Seek(1))) + "/" + Trim(Str(LOF(1)))
On Error GoTo 0
End Sub
Private Sub Winsock2_SendComplete()
If CloseAfterSend = True Then
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
CloseAfterSend = False
Else
SendNextData
End If
End Sub

<!-- Script tested on PC platform in IE5.0 and NN4.7 -->
<HTML>
<HEAD>
<TITLE>Popup Link Menu &copy; Mike McGrath 2000</TITLE>

<STYLE TYPE="text/css">
<!-- 
.lilguydiv {position:absolute;top:100;left:100;width:30;height:21;}
.menudiv {position:absolute;top:80;left:60;width:160;height:106;color:brown;background-color:white;border:solid;border-width:2;border-color:brown;z-index:10;visibility:hidden;}
//-->
</STYLE>
</HEAD>
<BODY BGCOLOR="silver">
Run your Mouse over the Lilguy for a Link Menu ...
<P>
<DIV CLASS="lilguydiv">
<A HREF="javascript:\\" ONMOUSEOVER="menu(1)">
<IMG BORDER="0" SRC="images/lilguy2.gif" WIDTH="30" HEIGHT="21"></A>
</DIV>
<DIV ID="linkmenu" CLASS="menudiv">
<CENTER><B>Select A Link</B></CENTER>
<UL>
<A HREF="javascript:fakelocation(1)"><LI>Link One</LI></A>
<A HREF="javascript:fakelocation(2)"><LI>Link Two</LI></A>
<A HREF="javascript:fakelocation(3)"><LI>Link Three</LI></A>
</UL>
</DIV>
<SCRIPT TYPE="text/javascript">
<!-- Original: Mike McGrath (mike_mcgrath@lineone.net) --> 
<!-- Website : http://website.lineone.net/~mike_mcgrath -->
<!--
var nav=(document.layers);
if(nav)document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=track;
function track(e) 
{
 var x=(nav)?e.pageX:event.x; 
 var y=(nav)?e.pageY:event.y;
 isvis(x,y);
}
function isvis(x,y)
{
 if(nav)
	{
	 if(document.linkmenu.visibility!="hide")
		{
		 if(x<60||x>220||y<80||y>166)document.linkmenu.visibility="hide";
		}
	}
	else if(linkmenu.style.visibility!="hidden")
	{
	 if(x<60||x>220||y<80||y>186)linkmenu.style.visibility="hidden";
	}
}
function menu(n)
{
 if(nav)
	{
  document.linkmenu.visibility=(n!=0)?"visible":"hidden";
	}
	else linkmenu.style.visibility=(n!=0)?"visible":"hidden";
}
function fakelocation(n)
{
 alert("This is target "+n+" ......\nreplace this link with your target URL");
}
// -->
</SCRIPT>
</BODY>
</HTML>
Upload
Commenti originali (3)
Recuperato da Wayback Machine