none
使用FileZilla檔案直接載入Adobe PDF Reader RRS feed

  • 問題

  • 各位高手們好

    我正面臨到一個問題

    我會使用Adobe PDF Reader來載入電腦上的檔案

    但是我不知道如何載入FTP的檔案

    我GOOGLE了很久 不是上傳就是下載

    希望可為大大們 有網頁或者程式碼能夠讓我參考!

    我有嘗試利用我的讀jpg檔的程式碼下去改 但是都是錯誤的

        Public Sub FTPOpen(Name As String, sender As Object)
            Try
                Dim wr As WebRequest = WebRequest.Create("ftp://192.168.1.240/" & Name & "/" & ID & ".jpg")
                Dim credits As New NetworkCredential("user", "root")
                DirectCast(wr, FtpWebRequest).Credentials = credits
                Using resp = wr.GetResponse(), strm = resp.GetResponseStream, img = Image.FromStream(strm)
                    sender.Image = New Bitmap(img)
                End Using
            Catch ex As Exception
            End Try
        End Sub

    2017年12月19日 上午 03:49

解答

  • 更正:

    檔案下載後:

    VBNET 直接用 Process.Start("d:\path\file.pdf") 

    即可,可免去呼叫 API


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年12月23日 下午 04:07

所有回覆

  • 目前比較有希望的是

    https://www.daniweb.com/programming/software-development/threads/326267/how-to-open-a-file-saved-on-ftp-server

    不過是C語言 看沒說很懂

    2017年12月19日 上午 08:11
  • ftp 下載的檔案,先存檔,再載入 Image 。

    加密的 Stream 因為加密長度未定,不能直接當來源,你如果要拿來當來源,建議你整個 Stram 讀成 MemoryStream 再當來源。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年12月19日 下午 02:52
  • SOR 這塊部分我不是說很懂

    網路上有很多 下載或上傳的程式碼,先下載再載入也不是說不能不過這樣會造成安全問題不是嗎?

    所以我想說要用直接載入的方式

    為何Stream 長度未定?? 可是我jpg跑得出來不是嗎?

    如果要使用MemoryStream我要修改哪段程式碼??

    2017年12月20日 上午 12:33
  • 您可以參考這篇討論的做法:

    C# WPF FTP Image source loading problem

    2017年12月20日 上午 12:52
  • 我正在嘗試 使用大大提供的網站

    把裡面正確的程式碼轉VB.net 可能轉的不太好 但是我會盡力

    裡面提供的C#程式碼有一段是

    //comvert MemoryStream to a BitmapImage
                        bitmapImage = new BitmapImage();
                        bitmapImage.BeginInit();
                        bitmapImage.StreamSource = ms;
                        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                        bitmapImage.EndInit();
                        bitmapImage.Freeze();

    而我有去找BitmapImage 

    https://msdn.microsoft.com/zh-tw/library/system.windows.media.imaging.bitmapimage.bitmapimage(v=vs.110).aspx

    並再C#的  命名空間:  輸入using System.Windows.Media.Imaging; 

    但是為何是錯誤的??


    2017年12月20日 上午 01:40
  • TO:tihs

    感謝您的耐心回復

    請問大大 C#的

    using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())

    要怎麼轉成VB??

    Using (FtpWebResponse Res = req.GetResponse())

    FtpWebResponse的地方會有錯誤 事了好幾個方式了

    2017年12月20日 上午 02:07
  • 目前我轉得差不多了 不過有幾個地方有錯誤 希望您能幫我看一下

    Public Sub GetImageFromFTPServer(filePath As String)
            Dim LocalDownLoadPath As AppDomain
            Dim req As FtpWebRequest = WebRequest.Create("ftp://www.server.com/Pictures/" & filePath & "")
            req.Method = WebRequestMethods.Ftp.DeleteFile
            req.UseBinary = True
            req.UsePassive = True
            req.Credentials = New NetworkCredential("Admin", "Password")
            Try
                'Using resp = wr.GetResponse(), strm = resp.GetResponseStream, img = Image.FromStream(strm)
                Using res = req.GetResponse()
                    Dim stream As Stream = res.GetResponseStream
                    Dim fs As FileStream = New FileStream(LocalDownLoadPath + filePath, FileMode.Create, FileAccess.Write) '(1)錯誤LocalDownLoadPath + filePath
                    Dim ms As MemoryStream = New MemoryStream()
                    Dim buffer As Byte = New Byte()
                    While (True)
                        Dim sz As Integer = stream.Read(buffer, 0, 1024) '(2)錯誤buffer
                        If (sz = 0) Then
                            Exit While
                        End If
                        ms.Write(buffer, 0, sz) '(2)錯誤buffer
                        fs.Write(buffer, 0, sz) '(2)錯誤buffer
                    End While
                    ms.Position = 0
                    'bitmapImage = New BitmapImage(); '錯誤(3) 沒有System.Windows.Media.Imaging命名空間
                    'bitmapImage.BeginInit();
                    'bitmapImage.StreamSource = ms;
                    'bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                    'bitmapImage.EndInit();
                    'bitmapImage.Freeze();
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    2017年12月20日 上午 02:49
  • 我已經把程式碼 都已經轉完了 執行的時候它說"找不到完成此操作所需的影像處理元件"

    而且它還會把我的程式碼刪除 我不要刪除阿~~<<此問題已解決

    Public Sub GetImageFromFTPServer(filePath As String) Dim LocalDownLoadPath As String = AppDomain.CurrentDomain.BaseDirectory Dim req As FtpWebRequest = WebRequest.Create("ftp://192.168.1.240/" & filePath & "") req.Credentials = New NetworkCredential("user", "root") 'req.Method = WebRequestMethods.Ftp.DeleteFile req.UseBinary = True req.UsePassive = True Try Using res = req.GetResponse() Dim stream As Stream = res.GetResponseStream Dim fs As FileStream = New FileStream(LocalDownLoadPath + filePath, FileMode.Create, FileAccess.Write)

    Dim ms As MemoryStream = New MemoryStream() Dim buffer(1024) As Byte While (True) Dim sz As Integer = stream.Read(buffer, 0, 1024) If (sz = 0) Then Exit While End If ms.Write(buffer, 0, sz) fs.Write(buffer, 0, sz) End While ms.Position = 0 Dim BitmapImage = New BitmapImage() BitmapImage.BeginInit() BitmapImage.StreamSource = ms BitmapImage.CacheOption = BitmapCacheOption.OnLoad BitmapImage.EndInit() BitmapImage.Freeze() End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub




    • 已編輯 燒腦袋 2017年12月20日 上午 05:07
    2017年12月20日 上午 03:31
  • 很難找到VB.NET的範例, 匆忙之間找了一篇C#的範例, 但是裏面用的是WPF技術(實在很SORRY), 您可以看一下這篇的範例(VB.NET CODE), 可以下載來執行看看:

    Build a Photo Viewer Using the New FTP Classes in .NET 2.0

    2017年12月21日 上午 01:21
  • TO:tihs

    我很謝您的回覆 不用在意

    您貼的參考是用PictureBox來做的可是記得PictureBox不能執行pdf檔而我已經會用PictureBox讀取jpg檔了

    而我把取讀jpg檔的程式碼改成讀pdf是跑不出來的,就是我最上面貼的程式碼

    我還滿好奇為什麼VB.net的文章為什麼會這麼少?? 

    我還是會努力找找看我覺得我GOOGLE已經翻到爛了

    pdf存成"流"似乎有辦法解決這問題也就是,心冷熱情熄大大說的MemoryStream

    但是真的很難找到文章

    而我目前沒有靠自己寫出取讀pdf的實力ˊˋ

    2017年12月21日 下午 02:30
  • 你先前貼出來的部分,只有 ftp 下載檔案。

    FTP 下載 PDF / jpg 的程式碼是相同的,跟檔案無關類型。

    要讀取 pdf ,內建控制項都沒這功能,你可以插入 Adobe 的 COM 物件,或是呼叫 adobe pdf reader 來瀏覽,例如簡單一點透過命令提示字元用 start ,要顯得帥一點,透過 shell32.dll API 來處理。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年12月21日 下午 04:48
  • 可以嘗試先存成檔案再顯示, 像這樣:

    FTP downloading blank PDF vb.net

    2017年12月22日 上午 03:59
  • TO:心冷熱情熄

    謝謝您的回覆

    我知道內建沒有支援pdf而我知道如何插入Adobe PDF Reader

    我目前只是不知道要怎麼用Adobe PDF Reader讀到伺服器的PDF檔案

    至於您說的shell32.dll API 我想我知道要者麼讀檔案後再研究看看:)

    謝謝您給我多一條線索

    TO:tihs

    非常謝協您為我找這麼多文章
    基本上我上傳
     ,下載 ,本地讀檔 ,是沒問題的!!

    我前幾天最近處理學校的事情所以有暫停研究一下所以今天才回

    您貼的這個方法確實可以解決我現在的問題,可是我最初的問題是讀到FTP的PDF圖片檔案

    所以我的問題依然還是存在的,我還是非常感謝您花時間為我找文章:)

    ------------------------------------------------------------------------

    我非常感謝大大們願意花時間教我,畢竟這都是大大們長年的智慧

    我最近幾天會上網爬文看看有沒有我想要的答案

    如果有找到相關文章或者程式碼,希望大大們一定要讓我知道阿><

    2017年12月23日 上午 08:09
  • 更正:

    檔案下載後:

    VBNET 直接用 Process.Start("d:\path\file.pdf") 

    即可,可免去呼叫 API


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年12月23日 下午 04:07