アップロードできないファイルをネット上にアップロードする方法
- WindowsXP ProSP1、VB6.0SP6のPC環境で、ローカルHDDにあるファイルをネット上にアップロードしたい場合、どのようにすればよいでしょうか?
- コードを作成してアップロードを試みましたが、うまくコピーできませんでした。解決策を教えてください。
- ネット上にファイルをアップロードする方法をご存知の方、ご教示ください。
- ベストアンサー
アップロードができない
ローカルHDDにあるファイルをネット上にアップロードしたいため下記コードを作成したのですがコピーする事ができませんでした。 PC環境:WindowsXP ProSP1、VB6.0SP6です。 どうすればアップーロードできるのでしょうか? どなたか御願い致します。 ///////////////////////////////////////////////////// Private InetState As Boolean Private InetError As String Private Sub Command1_Click() Inet.RequestTimeout = 2 Inet.UserName = "*" Inet.Password = "***" Inet.Execute "*", "PUT c:\11.txt 11.txt" Do DoEvents Loop Until InetState If InetError <> "" Then MsgBox InetError InetState = False Inet.Execute "*", "CLOSE" Do DoEvents Loop Until InetState InetState = False Inet.Execute "*", "QUIT" Do DoEvents Loop Until InetState Inet.Cancel Unload Me End Sub ///////////////////////////////////////////////
- a50
- お礼率31% (55/176)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
たぶんここを見たのかな? http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t10.htm この方法はExecuteした後、ステータスの変化をその都度取得する非同期アップロードの方法ですね。 参考URLのは、取得も兼ねて書いてあるようなので、チコッとばかり変更して張っておきます。 Option Explicit Private InetState As Boolean Private InetError As String Private InetData As String Private Sub Command1_Click() Call PutFile( _ "ftp://お台場.混む", _ "菊○", _ "職場復活の呪文", _ "c:\11.txt", _ "/public_html/11.txt" _ ) End Sub Private Function PutFile( _ ByVal p_strURL As String, _ ByVal p_strUID As String, _ ByVal p_strPWD As String, _ ByVal p_strFILE_Local As String, _ ByVal p_strFILE_Server As String, _ Optional ByVal p_intTimeOut As Integer = 2 _ ) As Boolean On Error GoTo PGMERR '接続 Inet.URL = p_strURL Inet.RequestTimeout = p_intTimeOut Inet.UserName = p_strUID Inet.Password = p_strPWD Inet.Protocol = icFTP 'アップロード開始 Inet.Execute , "PUT " & p_strFILE_Local & " " & p_strFILE_Server 'ステータスの状態が変わるまで待機 Do DoEvents Loop Until InetState If InetError <> "" Then MsgBox InetError End If '接続を閉じる処理 Inet.Execute , "CLOSE" Do DoEvents Loop Until InetState '接続終了処理 Inet.Execute , "QUIT" Do DoEvents Loop Until InetState PutFile = True PGMEND: Exit Function PGMERR: Call MsgBox("エラー番号:" & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical) GoTo PGMEND End Function Private Sub Inet_StateChanged(ByVal State As Integer) Dim w As String Select Case State Case icError InetError = Inet.ResponseCode & " - " & Inet.ResponseInfo InetState = True Case icResponseCompleted Do w = Inet.GetChunk(1024, icString) DoEvents If Len(w) = 0 Then InetError = "" InetState = True Else InetData = InetData & w InetState = False End If Loop Until InetState End Select End Sub
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
http://www.mitene.or.jp/~sugisita/vb6_net.html WININET FTPクライアント (WININET使用) を参考にしてはいかがですか?
補足
internetTransferコントロールを使用してアップロードできないかのかと探しています。
関連するQ&A
- VB6.0でFTP接続するとき、UserNameに@が含まれる場合(訂正版)
VB6.0で、下のようなプログラムを組んでいるのですが、 UserNameに"@"が含まれる場合、 Execute時にはInet1に'@'が2つ入る事になり、 FTP接続ができません。 このような場合、どのように対処すれば良いのでしょうか? Private Sub FtpUpload() With Inet1 .URL = "ftp://" & strFtpAddress & "/" ' URL .UserName = strUserId ' ユーザー名 .Password = strPass ' パスワード ' サーバーにファイルを送信 .Execute , "PUT " & _ strUploadFileName & " " & _ "wwwroot/" & strUploadFileName Do While .StillExecuting = True DoEvents Loop End With End Sub ※半角スペースは、全角スペースに置換しています。
- 締切済み
- Visual Basic
- VB.NETでサーバーからFILEを取得する
サーバー上にあるテキストファイルを FTPで取得したいのですが VBであればInetを使用して↓のように取得が可能 だったのですがVB.NETでのInetの使用方法がわかりません どなたかご存知の方がいらしたらご教授願えますか? また、別の方法がありましたらアドバイスをお願いします。 宜しくお願いいたします。 ==================== Dim FileName As String Inet.URL = "ftp://hostname/home/temp/" Inet.UserName = "username" Inet.Password = "password" Inet.Execute(, "GET test.txt " & FileName) Do While Inet.StillExecuting = True DoEvents() Loop MsgBox("ダウンロード終了") ====================
- 締切済み
- Visual Basic
- inetコントロールを使用したFTP送信の質問その1
ローカルにあるファイルを、FTPサーバに送信するプログラムを作成しました。 inetコントロールを使用して、以下のようなプログラムを組みました。 Private sub ftp() Inet1.Protocol=icFTP Inet1.Url="ftp://xxx.xxx.xxx.xxx/" Inet1.UserName="aaaa" Inet1.Password="bbbb" Inet1.Execute , "SEND x:\xxx\xxx.txt xxx/xxx.txt" End sub Private sub Inet1_StateChanged(Byval State As Integer) Dim sMsg As String Select Case State Case icRequestSent sMsg = "送信完了" TCall LogWrite(sMsg) ログをファイルに書く(自作関数) Case icError sMsg = Inet1.ResponseCode & " " & Inet1.ResponseInfo Call LogWrite(sMsg) エラーログをファイルに書く(自作関数) End Select End Sub ファイルを複数送信するため、「sub ftp()」は複数回呼び出されます。 上記プログラムにCLOSEコマンドとCANCELメソッドを追加して、以下のようにしたほうがよいのでしょうか? CLOSEコマンドとCANCELメソッドの使い方がよくわからず、悩んでいます。 Private sub ftp() Inet1.Protocol=icFTP Inet1.Url="ftp://xxx.xxx.xxx.xxx/" Inet1.UserName="aaaa" Inet1.Password="bbbb" Inet1.Execute , "SEND x:\xxx\xxx.txt xxx/xxx.txt" Inet1.Execute , "CLOSE" End sub Private sub Inet1_StateChanged(Byval State As Integer) Dim sMsg As String Select Case State Case icRequestSent sMsg = "送信完了" TCall LogWrite(sMsg) ログをファイルに書く(自作関数) Case icError sMsg = Inet1.ResponseCode & " " & Inet1.ResponseInfo Call ErrLogWrite(sMsg) エラーログをファイルに書く(自作関数) Inet1.Cancel End Select End Sub
- 締切済み
- Visual Basic
- 画像をブランクつきでランダムに表示する方法が分かりません。
VB6.0を使用してプログラミングを作成しているのですが、初心者のため行き詰っています。 前回も質問させていただいたのですが、ブランク(ピクチャーボックスの非表示)が間に入ることを想定していなかったため、改めて質問させていただきます。 作成したいプログラミングの内容は、8枚の写真を2秒間ずつ、1.5秒間のブランクを挿んで、ランダムに一枚ずつピクチャーボックスに表示するというものです。 RandomizeはByte型を使用したいのですが、コードがよくわかりません。 以下は、今までに出来上がっているコードです。 Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private Sub Command1_Click() Command1.Visible = False PresentStimulus0 End Sub Private Sub PresentStimulus() Picture1.Visible = True Picture1.Picture = LoadPicture("C:\AAA.jpg") nowtime = timeGetTime() 'milliseconds from windows startup Do DoEvents Loop Until timeGetTime() - nowtime > 2000 Picture1.Visible = False Do DoEvents Loop Until timeGetTime() - nowtime > 1500 End Sub C:\AAA.jpgの部分にランダムに8枚の画像を呼び出し、PresentStimulusを8回繰り返したいのですが・・・。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- シリアル通信:オフライン時にうまく終了してくれません
シリアルプリンタの制御をVB6で行っております。 以下のようなコードですが、うまく終了してくれません。 'グローバル 'プリンタの状態 Dim BUF as String '起動時 Private Sub Form_Load() MSComm1.PortOpen = True Text1.Text = "" Timer1.Enabled = True End Sub '終了 Private Sub Form_Unload(Cancel As Integer) Timer1.Enabled = False MSComm1.PortOpen = False End Sub 'タイマー Private Sub Timer1_Timer() Timer1.Enabled = False Call CheckPrint Timer1.Enabled = True End Sub Private Sub MSComm1_OnComm() Dim TimeOut As Long Dim sTime As Long Dim eTime As Long Select Case MSComm1.CommEvent '受信 Case comEvReceive TimeOut = 100 sTime = timeGetTime Do If (TimeOut - eTime) < 0 Then Exit Do End If eTime = (timeGetTime - sTime) Loop Until MSComm1.InBufferCount >= 82 BUF = MSComm1.Input End Select End Sub プリンタの状態チェック Private Sub CheckPrint() Dim sTime As Long Dim eTime As Long Dim TimeOut As Long Dim i As Integer Dim n As Integer BUF = "" 'プリンタの情報取得コマンド MSComm1.Output = "~HS" 'タイマ開始 TimeOut = 400 sTime = timeGetTime eTime = 0 Do DoEvents If BUF <> "" Then Exit Do End If eTime = (timeGetTime - sTime) Loop Until TimeOut - eTime < 0 If BUF <> "" Then ... .. 宜しくお願いします。
- ベストアンサー
- Visual Basic
- VBAを使ったストップウォッチを時/分/秒で・・・
エクセルでVBAを使って、ストップウォッチの様な形で時間を表示しながら計測したおのですが、以下のマクロだと少数点が表示されており、且つ、60秒に達したときに分に切り替わらない為、分に換算しなければなりません。 Private blnStop As Boolean Private blnStart As Boolean Sub StopWatch() Dim dblTimer As Double If blnStart = True Then blnStop = True Exit Sub End If blnStart = True blnStop = False dblTimer = Timer Do Until blnStop = True Cells(1, 1) = Int((Timer - dblTimer) * 100) / 100 DoEvents Loop blnStart = False blnStop = False End Sub この様に、常に時間を特定のセルに表示させながら計測する様な形にしたいのですが、どうすれば「1時間20分50秒」の様な表示にできるでしょうか。 どなたかよろしくお願いいたします。
- 締切済み
- Visual Basic
- フリーズしてしまいます。
アクセスでWebBrowserコントロールを使ってIE操作をしているのですが フリーズしてしまいます。 フォームに、WebBrowser0を配置して、 ---------------------------------- Private Sub Form_Load() Me.WebBrowser0.Navigate "http://login.yahoo.co.jp/config/login?logout=1" Call wait 省略・・・ End Sub ---------------------------------- Sub wait() Const READYSTATE_COMPLETE As Long = 4 Do Until Me.WebBrowser0.ReadyState = READYSTATE_COMPLETE Loop Do While Me.WebBrowser0.Busy = True DoEvents Loop End Sub ---------------------------------- を実行すると必ずフリーズします。 ---------------------------------- Sub wait() Do While Me.WebBrowser0.Busy = True DoEvents Loop End Sub ---------------------------------- にしたら問題なく表示されます。 でもこれだけだと、表示し終わりません。 表示されてないのに次のコードへ進んでしまいます。 そもそもなぜフリーズするのでしょうか? アクセス2007です。ご回答よろしくお願いします。
- ベストアンサー
- Visual Basic
- 終了してもプログラムが実行したまま(VB)
非常に時間のかかる繰り返し処理を行なうプログラムを作りました。どのくらい、プログラムが進行しているのかわかりやすくするため、 Progress.Show でProgressという名前のフォームを表示し、そこに、プログラムが何%終わったのか表示するようにしました。 プログラムはDo Loop文が使ってあるので、何%終わったのかを表示するためにLoopした回数を取得して、それをフォームに表示することにしましたが、どこかで調べたら機械は、Do Loopのあいだはフォーム上に文字を表示するのに手が回らないからDoEventsを使ってイベントを実行させなさい、といわれました。 そこまではうまくいきました。プログラムを実行すると、プログラムが実行されて何%終わったかもちゃんと表示できるようになりました。 ところが、プログラムの実行中にフォームの右上の×ボタンを押したところ、フォームは画面から消え、プログラムが終了したように見えるのに、VB Editorでは[実行中]となっており、終わってくれません。ずっとDo Loopが実行されたままです。 Private Sub Form_Terminate() のところに Unload Progress と書いても、「Unloadメソッドは使えません」などというエラー・メッセージが出ます。(フォーム上にボタンを置き、そこをクリックするとUnloadするようにしてみましたがやはり同じことを言われました。) 原因は何でしょうか? フォームをUnloadする、ということの意味をちゃんと理解していないのでいけないのだと思うのですが、調べてもよく言っていることがわかりません。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- 無限ループ VBA IE操作
VBAです。 とあるサイトで Sub IE_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub が無限ループに陥ります。 中断して Exit Sub を入れてみましたが、抜けれません。 ページは既に表示済みです。 なぜ無限ループが抜けられないのか、 なぜページが表示されているのにこのコードが繰り返されるのか 何かわかる方よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 表示されるまで待たせたい
vbaでieの操作をしているのですが Sub マクロ1() Do While ObjIE.Busy = True DoEvents Loop End Sub でも Sub マクロ2() Const READYSTATE_COMPLETE As Long = 4 Do Until ObjIE.ReadyState = READYSTATE_COMPLETE Loop End Sub でも、 表示される前に次のコードへ進んでしまって エラーになってしまいます。 表示されるまで待たせるには Application.Wait (Now + TimeValue("00:00:03")) を付け足すしかないのでしょうか? (できればこれは使いたくないです) ご教授よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
わかりました。ありがとうございますした。
補足
早速試してた所アップロードされました。有難うございます。 Inet.Execute , "PUT " & p_strFILE_Local & " " & p_strFILE_Server を変えただけで、なぜアップロードできたのか理解できません。 Inet.Execute "ftp://お台場.混む", "PUT c:\11.txt /public_html/11.txt" でも一緒だと思うのですが・・・