0

Web サーバー上の PHP ファイルに画像ファイルをアップロードしようとしています。

VB.NET の場合 ->

My.Computer.Network.UploadFile(tempImageLocation, "website.com/upload.php")

tempImageLocation は、イメージが配置されているハード ドライブ上の場所です。イメージ、指定したハードドライブにあります。

PHP の場合 ->

$image = $_FILES['uploads']['name'];

ページを読み込んでいるのでわかりませんが、PHPは「アップロード」の下にファイルを見つけることができません

4

7 に答える 7

5

同じ質問を探しているときに、Google が私をここに連れてきました。アイデアをくれた人々に感謝します.PHPの知識が少しあれば、それを達成できました. 私はそれが古い質問であることを知っていますが、それでも私のコードを共有して、将来人々を助けることができるようにします..

VB:

My.Computer.Network.UploadFile("e:\file1.jpg", "http://www.mysite.com/upl/upl.php")

PHP:

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);

アップロード フォルダに適切な権限を付与することを忘れないでください。

于 2013-12-01T07:43:16.230 に答える
2

私は知っています、古いです..しかし、ここに私への解決策があります:

    Private Sub HttpUploadFile(
ByVal uri As String,
ByVal filePath As String,
ByVal fileParameterName As String,
ByVal contentType As String)

    Dim myFile As New FileInfo(filePath)
    Dim sizeInBytes As Long = myFile.Length

    Dim boundary As String = "---------------------------" & DateTime.Now.Ticks.ToString("x")
    Dim newLine As String = System.Environment.NewLine
    Dim boundaryBytes As Byte() = Encoding.ASCII.GetBytes(newLine & "--" & boundary & newLine)
    Dim request As Net.HttpWebRequest = Net.WebRequest.Create(uri)
    request.ContentType = "multipart/form-data; boundary=" & boundary
    request.Method = "POST"
    request.KeepAlive = True
    'request.Credentials = Net.CredentialCache.DefaultCredentials

    Using requestStream As IO.Stream = request.GetRequestStream()
        Dim formDataTemplate As String = "Content-Disposition: form-data; name=""{0}""{1}{1}{2}"
        requestStream.Write(boundaryBytes, 0, boundaryBytes.Length)

        Dim headerTemplate As String = "Content-Disposition: form-data; name=""{0}""; filename=""{1}""{2}Content-Type: {3};"
        Dim header As String = String.Format(headerTemplate, fileParameterName, filePath, newLine, contentType)
        header = header & vbNewLine & "Content-Length: " & sizeInBytes.ToString & vbNewLine
        header = header & "Expect: 100-continue" & vbNewLine & vbNewLine

        'MsgBox(header)
        Debug.Print(header)

        Dim headerBytes As Byte() = Encoding.UTF8.GetBytes(header)
        requestStream.Write(headerBytes, 0, header.Length)

        Using fileStream As New IO.FileStream(filePath, IO.FileMode.Open, IO.FileAccess.Read)
            Dim buffer(4096) As Byte
            Dim bytesRead As Int32 = fileStream.Read(buffer, 0, buffer.Length)
            Do While (bytesRead > 0)
                requestStream.Write(buffer, 0, bytesRead)
                bytesRead = fileStream.Read(buffer, 0, buffer.Length)
            Loop
        End Using
        Dim trailer As Byte() = Encoding.ASCII.GetBytes(newLine & "--" + boundary + "--" & newLine)
        requestStream.Write(trailer, 0, trailer.Length)
        requestStream.Close()
    End Using


    Dim response As Net.WebResponse = Nothing
    Try
        response = request.GetResponse()
        Using responseStream As IO.Stream = response.GetResponseStream()
            Using responseReader As New IO.StreamReader(responseStream)
                Dim responseText = responseReader.ReadToEnd()
                Debug.Print(responseText)
            End Using
        End Using
    Catch exception As Net.WebException
        response = exception.Response
        If (response IsNot Nothing) Then
            Using reader As New IO.StreamReader(response.GetResponseStream())
                Dim responseText = reader.ReadToEnd()
                Diagnostics.Debug.Write(responseText)
            End Using
            response.Close()
        End If
    Finally
        request = Nothing
    End Try
End Sub

使用:

HttpUploadFile("https://www.yousite.com/ws/upload.php?option1=sss&options2=12121", FULL_FILE_NAME_PATH_IN_YOUR_PC, "files", "multipart/form-data")

覚えていないウェブサイトのそうめんコードをコピーします。この 2 行のコードのみを機能させます。

header = header & vbNewLine & "Content-Length: " & sizeInBytes.ToString & vbNewLine header = header & vbNewLine & "Expect: 100-continue" & vbNewLine

助けてほしい。

于 2019-10-06T21:25:25.703 に答える
0

これがあなたのための簡単で汚いチュートリアルです:PHPファイルのアップロード

「アップロード」は、フォームの要素の name 属性値です。

<input type="file" name="uploads" />

つまり、これは $_FILES グローバルでアクセスされる POST 変数名です。

于 2012-05-29T03:43:24.810 に答える
0

フィールド名を設定しない場合は、アップロードしたファイルをこれで保存できます

$file = array_shift($_FILES);
move_uploaded_file($file['tmp_name'], '/path/to/new/location/'.$file['name']);
于 2012-05-29T04:01:35.287 に答える
0

これら の他の回答のいくつかを見てください。PHP では、POST メソッドでアップロードされたファイルが特定のヘッダーを使用する必要があります。これらのヘッダーは通常、Web フォームからアップロードするときにブラウザーによって設定されますが、VB ではHttpWebRequest Classで設定できます。

PHP 側に関しては、$image = $_FILES['uploads']['name'];. PHP は、$_FILES['uploads']['tmp_name']変数でアクセス可能な一時ファイル名move_uploaded_file()でアップロードを保存します。アップロードを一時ストレージから永続的なアップロード ディレクトリに移動する標準的な方法は、アップロードを使用することです。PHPのマニュアルでは、その概要がよく説明されています。

于 2012-05-29T04:05:21.837 に答える