■93864 / inTopicNo.1) |
バイナリファイル⇒元データファイルへの復元方法(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
以上、よろしくお願い致します。
|
|