VBで「ファイルをアップロードする実行ファイル」の作成


ファル  2005-06-17 01:52:02  No: 122736

HTMLのフォームでアップロードされたファイルを保存するASPファイルがあり、そのASPファイルに、IEなどのブラウザを使わず、ファイルをアップロードするような実行ファイルを作りたいと考えています。
つまり、アップロードするためだけの実行ファイルを作りたいということなんです。
(完成後はdllにしようかと思っているのでアップロード専用にしたいんです)

現在VB6.0で作成を進めているんですが、どうもうまくいきません。
ソースは下のような感じです。
クリックするとアップロードを開始するという感じです。

*.txtや*.htmはうまくアップロードされるんですが、
*.jpg、*.gif、*xlsなどのファイルは、アップロード先のファイルをうまく開けません。
(一応アップロードされている事は、されているんですが、データの中身が変化しているようです)

改善箇所が分かる方がいましたら、是非ご指摘をお願いします。
ちなみにASP側は、HTMLのフォームでアップロードされた場合きちんと動作しています。

Sub UploadFile(DestURL As String, FileName As String)
Dim sFormData As String
Dim d As String
Dim FieldName As String

FieldName = "xfile001"
Const Boundary As String = "--B21Softt20020709"
sFormData = GetFile(FileName) 

d = "--" + Boundary + vbCrLf
d = d + "Content-Disposition: form-data; name=""" + FieldName + """;"
d = d + " filename=""" + FileName + """" + vbCrLf 
d = d + "Content-Type: image/gif" + vbCrLf + vbCrLf
'd = d + "Content-Type: image/jpeg" + vbCrLf + vbCrLf  アップロードするファイルによってかえています
'd = d + "Content-Type: text/plain" + vbCrLf + vbCrLf
d = d + sFormData
d = d + vbCrLf + "--" + Boundary + "--"

IEPostStringRequest DestURL, d, Boundary
End Sub

Sub IEPostStringRequest(URL As String, FormData As String, Boundary As String)
Dim WebBrowser: Set WebBrowser = CreateObject("InternetExplorer.Application")
Dim bFormData() As Byte
ReDim bFormData(Len(FormData) - 1) 
bFormData = StrConv(FormData, vbFromUnicode)

WebBrowser.Navigate URL, , , bFormData, _
"Content-Type: multipart/form-data; boundary=" + Boundary

Do While WebBrowser.busy
' Sleep 100
DoEvents
Loop

WebBrowser.Quit
End Sub

Function GetFile(FileName As String) As String
Dim FileContents() As Byte, FileNumber As Integer
ReDim FileContents(FileLen(FileName) - 1)
FileNumber = FreeFile() 
Open FileName For Binary As #FileNumber
Get #FileNumber, , FileContents
Close #FileNumber 
GetFile = StrConv(FileContents, vbUnicode)
End Function

Private Sub Command1_Click()
UploadFile "ASPファイルのURL", "送信ファイルのパス"
End Sub


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加