FrontPage 新規 編集 検索 一覧 ヘルプ

BBS-雑談/28

ブラウザからのドラッグ&ドロップによる複数ファイルのアップロードについて - たや (2003年12月16日 15時37分00秒)

はじめてお便り申し上げます。掲題の件で困っております。ご教授おねがいします。

ブラウザから複数ファイルをドラッグ&ドロップを使用し、サーバに対して、ファイルアップロード処理を行いたいです。現状として、ActiveX(VBで作成)を作りそこからファイルのバイナリデータを送信しようとしているのですがなかなか、うまくいきません。サーバ側の処理としてBasp21コンポーネントの使用を考えています。

また代替案として、ActiveXにてアップロードしたいファイル情報(絶対パス)を取得したのちに内部処理として、下記のような方法で送信したいと考えています。ですが、type="file"にはvalueプロパティが使用できないので困っています。

<FORM METHOD="POST" ACTION="MntEnt030105.asp" enctype="multipart/form-data" target="output"> <input type="submit" value="アップロード"><BR><input type="file" name="xfile001" size="50"><BR><input type="file" name="xfile002" size="50"><BR><input type="file" name="xfile003" size="50"><BR></FORM>

--以下VBのコードを添付します

Private Sub cmdClear_Click()

    List1.Clear
    Label1.Caption = "0"

End Sub

Private Sub cmdDelete_Click()

    Dim i As Integer
    Dim j As Integer
    Dim iCount As Integer
    
    iCount = 0
    
    For j = 0 To List1.SelCount - 1
        For i = 0 To List1.ListCount - 1
            If List1.Selected(i) = True Then
                List1.RemoveItem (i)
                iCount = iCount + 1
                Exit For
            End If
        Next
    Next
    
  
    Label1.Caption = List1.ListCount

End Sub

Private Sub Command1_Click()

    Dim i As Integer
    Dim varTo As Variant
    Dim strForm As String
    Dim strTo   As String
    Dim strMsg  As String
    Dim strFileName As String
    Dim buffer As String
    Dim bData  As Data
    Dim formData As String
    Dim formDataHeader As String
    Dim formDataContent As String
    Dim strBoundary As String
  
    Err = 0
    
    strBoundary = "--B21Softt20020709" + vbCrLf
    

' buffer = String(2000000, " ")

    

' ProgressBar1.Max = List1.ListCount

    

' Winsock1.Protocol = sckTCPProtocol'' Winsock1.RemoteHost = "http://nxtsv050"

    
    Inet1.Protocol = icHTTP
    Inet1.URL = "http://nxtsv050/hosyu_dev/kin/testMntEnt030105.asp"
     
    For i = 1 To List1.ListCount
        
        ProgressBar1.Value = i
        strFileName = List1.List(List1.ListIndex)

' bData(i) = strFileName

        formDataHeader = "Content-Type: multipart/form-data; " + strBoundary + strBoundary
        
        formDataHeader = formDataHeader & "Content-Disposition: form-data; name='" + "xfile" + Right("000" & i, 3) + "'"
        
        formData = formDataHeader + "; filename='" + strFileName + "'"
        formData = formData + "Content-Type; application/octet-stream "
        

formData = ""

        Open strFileName For Input As #1
        Do While Not EOF(1)
           Input #1, buffer
           formData = formData + buffer
        Loop
        Close #1
        
          
        If Err.Number <> 0 Then
            strMsg = Err.Description
            MsgBox strMsg, vbCritical, "test"
        End If
        
    Next
    

' formData = formData + strBoundary

    
    Inet1.Execute Inet1.URL, "POST", formData
    If Err.Number <> 0 Then
        strMsg = Err.Description
        MsgBox strMsg, vbCritical, "test"
    End If
    
    Open "xxxx.txt" For Binary As #2
    Put #2, , formData
    Close #2
    
    
    

End Sub

Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim i As Integer
    Dim j As Integer
    
    j = i
    
    For i = 1 To Data.Files.Count
        If List1.ListCount > 0 Then
            If f_CheckFile(Data.Files.Item(i)) = False Then
                List1.AddItem Data.Files.Item(i)
            End If
        Else
            List1.AddItem Data.Files.Item(i)
        End If
    Next
    
    
    Label1.Caption = List1.ListCount

End Sub

Private Function f_CheckFile(strFile As String) As Boolean

    Dim i As Integer
    
    f_CheckFile = False
    For i = 0 To List1.ListCount - 1
        If strFile = List1.List(i) Then
            f_CheckFile = True
            Exit For
        End If
    Next
    

End Function

Private Sub UserControl_Initialize()

    Label1.Caption = 0

End Sub

以上よろしくお願いします。(環境)クライアント  IE5.5サーバ  WINDOWS2000  IIS5.0

{{comment}}

Yesterday Today Total