Member 10926601 Ответов: 1

Как загрузить файл с веб-сайта, который сгенерировал идентификатор файла для загрузки?


Я использую управление веб-браузером для загрузки файла, где URL генерирует файл динамически. Во-первых, я должен загрузить pdf-файл, а затем веб-сайт преобразует pdf-файл в excel после процесса преобразования веб-сайт генерирует URL-адрес, содержащий идентификатор файла после запроса этого URL-адреса веб-сайт создает файл динамически, а затем появляется диалоговое окно сохранения. Как обрабатывать такой тип URL-адреса?

Пример : я загрузил имя файла: 123.pdf

После процесса преобразования webiste генерирует Url-адрес: https:www.123.com/api/download/562362

Затем,

Когда я нажимаю на этот Url-адрес, появляется диалоговое окно сохранения, и загруженное имя файла будет 123.xlsx

Как загрузить файл без отображения диалогового окна сохранения? (Я не могу загрузить его программно.)

Что я уже пробовал:

 Dim Download_link As String
    Dim FileName As String
    Dim Final_File_Name As String
    Dim savepath = Application.StartupPath & "\BACKUP\"
Private Sub Download_Click(sender As Object, e As EventArgs) Handles Download.Click
        For Each Ele As HtmlElement In WebBrowser1.Document.GetElementsByTagName("a")
            If Ele.GetAttribute("InnerText").Contains("Click here to download it.") Then
                Dim s As String = Ele.GetAttribute("href")
                Download_link = s
                MsgBox(s)
                Dim FileName As String = Me.WebBrowser1.Document.GetElementById("file-field-label").InnerText
                Dim objReq As WebRequest = WebRequest.Create(Download_link)
                Dim objResp As WebResponse = objReq.GetResponse()
                Dim objStream As Stream = objResp.GetResponseStream()
                Dim reader As StreamReader = New StreamReader(objStream, Encoding.ASCII)
                Dim fStream As FileStream = New FileStream(savepath & FileName, FileMode.Create)
                Dim writer As StreamWriter = New StreamWriter(fStream)
                writer.Write(reader.ReadToEnd())
                objStream.Close()
                reader.Close()
                writer.Close()
                fStream.Close()
            End If
        Next
    End Sub

1 Ответов

Рейтинг:
2

F-ES Sitecore

Вы не можете скачать без этого диалогового окна, это функция безопасности браузера. Вам нужно будет загрузить файл программно. Вместо того, чтобы продолжать с вашим текущим решением, вы должны работать, чтобы исправить причину, по которой вы не можете отключить его программно.