1

ユーザーが fileUpload コントロールでいくつかのファイルを選択する asp.net Web サイトがあります。次に、ファイルを別のサーバーに投稿する必要があります

私のドメインは [http://www.mydomain.com] です

ファイルをアップロードする必要があるアドレスは、[https://www.externaldomain.com/upload.ashx?asd2t423eqwdq] のようなものです。

私は次のことを試しました:

Dim uploadedFiles As HttpFileCollection = Request.Files
Dim userPostedFile As HttpPostedFile = uploadedFiles(0)
Dim filePath As String

 filePath = "https://www.externaldomain.com/upload.ashx?asd2t423eqwdq" & "/" & userPostedFile.FileName


userPostedFile.SaveAs(filePath)

しかし、エラーが発生します: The SaveAs method is configured to require a rooted path, and the path 'https://www.externaldomain.com/upload.ashx?asd2t423eqwdq/Core CSS 3.pdf' is not rooted

インターネットを検索しましたが、ページのサーバーにアップロードする方法の例しか見つかりませんでした。

編集: HttpWebRequest を使用してリンクにアクセスしましたが、部分的に機能しました。また、ユーザー名とパスワードの 2 つの POST パラメータも送信する必要があります。

これは私のコードが今どのように見えるかです:

Dim link As String = "https://www.externaldomain.com/upload.ashx?e9879cc77c764220ae80"

Dim req As HttpWebRequest = WebRequest.Create(link)
Dim boundary As String = "-----"
req.ContentType = "multipart/form-data; boundary=" + boundary
req.Method = "POST"

Dim username As String = "test"
Dim userpass As String = "123456"


Dim credentials() As Byte = Encoding.UTF8.GetBytes("username=" & username & "&password=" & userpass & "--\r\n" & boundary & "--\r\n")



    Dim separators() As Byte = Encoding.UTF8.GetBytes("--" + boundary + "--\r\n")

    Dim uploadedFiles As HttpFileCollection = Request.Files //this is where i take the file that the user wants to upload
    Dim userPostedFile As HttpPostedFile = uploadedFiles(0)


    //i convert the file to a byte array
    Dim binaryReader As IO.BinaryReader
    Dim fileBytes() As Byte
    binaryReader = New BinaryReader(userPostedFile.InputStream)
    fileBytes = binaryReader.ReadBytes(userPostedFile.ContentLength)

    //'get the request length
    req.ContentLength += credentials.Length
    req.ContentLength += userPostedFile.ContentLength
    req.ContentLength += separators.Length
    req.ContentLength += 1


    Dim dataStream As Stream
    dataStream = req.GetRequestStream

    dataStream.Write(credentials, 0, credentials.Length)
    dataStream.Write(separators, 0, separators.Length)
    dataStream.Write(fileBytes, 0, fileBytes.Length)

    dataStream.Close()

    Dim response As HttpWebResponse = req.GetResponse

私が得るエラーは「禁止されています」です。ユーザー名とパスワードは 100% 正しいです。問題は、リクエストを正しく作成していないことだと思います。資格情報のみを投稿すると、ファイルがないというエラーが表示されます...何かアイデアはありますか?

4

1 に答える 1

0

最終的に、ここで提供されているコードを使用しましたhttp://aspnetupload.com/

私はそれをdllにコンパイルし、私のソリューションへの参照を追加しました。できます :)

于 2012-05-10T13:43:49.477 に答える