VB.netの逆引き大全を見て、WEBサーバーへCSVファイルのアップロードを試みているのですが、教本の真似をしてもうまくいきません。アップロードはされるのですが、サーバーでCSVファイルを確認すると中身がなく、容量は当然0KBとなっています。当方、サーバーのphpファイルに渡したCSVファイルの1行ずつをMySQLへデータを追加する作業を行っています。
CSVファイルは50行2列(質問・回答)のデータ群です。
|質問|回答|
|aaa|aaa| <---CSVファイルの中身は見出しなし、ここから50行分
|bbb|bbb|
|bbb|ccc|
また、CSVファイルはSJISで、phpファイルの中でUTF8に変換されデータベースへ登録される仕組みです。
以下、VB側で設定するコードです。
vb
1Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 2 Dim client As New HttpClient() 3 Try 4 Dim content As New MultipartFormDataContent() 5 Dim path = "C:デスクトップ\data.csv" 6 Dim fileCont = New StreamContent(System.IO.File.OpenRead(path)) 7 fileCont.Headers.ContentDisposition = 8 New ContentDispositionHeaderValue("attachment") With 9 { 10 .FileName = System.IO.Path.GetDirectoryName(path) 11 } 12 content.Add(fileCont) 13 Await client.PostAsync("http://送信先ファイル.php", content) 14 TextBox2.Text = "OK" 15 16 Catch ex As Exception 17 TextBox2.Text = "NG" 18 End Try 19 20 21 End Sub
なお、fileCont.Headers.ContentDisposition からcontent.Add(fileCont)の手前までをコメントアウトし、
ダミーデータとして1200行分のCSVファイルをテストしたところ、同じくサーバには送られ内容も25KBと存在しておりました。
しかし、先頭から200行分データが抜け落ち、POST通信上付加される情報が最終データ行から1行飛ばして記録されていました。
なお本番で扱う50行分のCSVファイルでは上記のコメントアウトをしてもしなくても0KBとなっています。
自分の見解としてはヘッダー情報のコーディングが問題なのかと思っていますが、私の勉強不足もありこれをクリアしきれませんでした。ほかにも色んなサイトを探すのですが、基本的には同じコードでして、ここから必要なコーディングをどなたか御教示願えないでしょうか。
何卒よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 09:46
退会済みユーザー
2020/02/18 23:54 編集