C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■93864 / )  バイナリファイル⇒元データファイルへの復元方法(VB.net
□投稿者/ なす (1回)-(2020/02/14(Fri) 10:45:09)

分類:[.NET 全般] 

分類:[Vb.net]

アプリケーションを使用してアップロードしたファイルを、下記の添付ファイルダウンロードAPIを使用してバイナリデータ取得まで出来ました。
https://sites.google.com/a/sateraito.jp/nextset-dounyuu/Home/wakufuro-ji-neng/api#TOC-API3

それを元データに変換(ExcelやPDF)しようとしています。しかし、上手くいきません。。
下記コードだとファイルは作成されるのですが、PDFだと真っ白。Excelだと破損ファイルになります。

なんとかならないでしょうか?

   Private Sub fileDownload(ByVal doc_id As String, ByVal file As JSONRowFile, ByVal token As String)

        'POST送信する文字列を作成
        Dim postData As String = _
                "access_token=" + token + "&" + IMPERSONATE_EMAIL + "&" + APPLICATION_ID + "&doc_id=" + doc_id + "&file_id=" + file.file_id

        'バイト型配列に変換
        Dim postDataBytes As Byte() = _
            System.Text.Encoding.ASCII.GetBytes(postData)

        'WebRequestの作成
        Dim req As System.Net.WebRequest = _
            System.Net.WebRequest.Create("https://workflow.nextset.jp/optex/api/public/attach/download")
        'メソッドにPOSTを指定
        req.Method = "POST"
        'ContentTypeを"application/x-www-form-urlencoded"にする
        req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"
        'POST送信するデータの長さを指定
        req.ContentLength = postDataBytes.Length

        'データをPOST送信するためのStreamを取得
        Dim reqStream As System.IO.Stream = req.GetRequestStream()
        '送信するデータを書き込む
        reqStream.Write(postDataBytes, 0, postDataBytes.Length)
        reqStream.Close()

        'サーバーからの応答を受信するためのWebResponseを取得
        Dim res As System.Net.WebResponse = req.GetResponse()
        '応答データを受信するためのStreamを取得
        Dim resStream As System.IO.Stream = res.GetResponseStream()
        '受信して表示
        Using sr As New System.IO.StreamReader(resStream, ENC)
            Dim str = sr.ReadToEnd
            Dim bs As Byte() 'バイト配列

            bs = Encoding.GetEncoding("UTF-8").GetBytes(str) 'shift_jis
            bs = Encoding.UTF8.GetBytes(str) 'utf-8
            Try
                Dim fs As New FileStream("C:\Users\[秘密]\Desktop\btest\" + file.file_name, FileMode.Create)
                Dim bw As New BinaryWriter(fs)
                bw.Write(CType(bs, Byte()))
                bw.Close()
                fs.Close()
            Catch ex As IOException
                Debug.Write(ex.Message)
            End Try


        End Using

        Return

    End Sub

以上、よろしくお願い致します。

返信 編集キー/


管理者用

- Child Tree -