@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NETでのCSVファイル読込

1
投稿者投稿内容
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2007-01-09 11:55
過去ログを参照させて頂きましたが、どうしてもサーバー側でのエラーが消えないので教えて頂きたく書き込みをさせて頂きます。

【やりたい事】
・クライアント側にてファイルを参照し、参照したファイルデータを読み込む

HTMLにてボタンAを作成し(下記HTMLソース)ファイル参照を行い、ボタンBを押すとボタンAにて参照したファイルのデータを読み込み画面表示したいのですが、下記VBソース側の@部分で「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーになります。
開発端末ではエラーになら無いのですが、サーバーに置きサーバーローカルで実行させるとエラーになります。

関連して質問ですが、参照ファイルデータを画面表示するにはクライアント側にてファイル参照を行ってもやはりWEB自体がサーバーにて実行されている為、一旦サーバー側に参照ファイルを保存し読み出す必要があるのでしょうか??
どなたかご存知の方がいらっしゃいましたらご教授願います。

【HTMLソース】
<INPUT id="input_txt" type="file" name="input_txt" runat="server">

【VBソース】
Private Structure CSV_File
Dim data1 As String
Dim data2 As String
End Structure
Private CSV() As CSV_File

Private sub Button_Click
''ボタンをクリックした時の処理
Dim Full_Pass, FileName As String
Dim fileNo As Integer = FreeFile()

'フルパス取得
Full_Pass = input_txt.PostedFile.FileName '----@

If Full_Pass <> "" Then
FileName = Path.GetFileName(Full_Pass)

FileOpen(fileNo, Full_Pass, OpenMode.Input)

Do Until EOF(fileNo) 'ファイルの最後までループ
ReDim Preserve CSV(n)
Input(fileNo, CSV(n).data1)
Input(fileNo, CSV(n).data2)
n += 1
Loop

FileClose(fileNo) 'ファイルを閉じる
End IF
End Sub


どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-09 12:16
中身はよく読んでませんが、Webサーバと同じマシン内にあるファイルしか読み込めない
プログラムになっていると思います。
サーバ上で実行できないのはセキュリティの権限の関係ではないでしょうか。

で。
お察しのとおり、ASP.NETのコードはサーバ上で実行されます。
なので、クライアントにあるファイルは一度サーバ上にアップロードする必要があります。
type="file"のINPUTタグはもともとそのアップロードのために使うものです。
サーバ上にアップロードされたファイルは保存することもできますが、保存せず
メモリ上のデータを操作することもできなくはないと思います。
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2007-01-09 13:16
返答ありがとうございます。
サーバ上のセキュリティですが、他のプログラムは現在のサーバで作動しています。また、セキュリティレベルを下げてみたのですが、やはり同じエラーが返ってきました。
しかし、クライアント端末から開発環境端末へ接続し試した結果、エラーにならずに処理されました。開発環境端末とサーバ端末の違いはOSのみですが、OSの関係はあるのでしょうか??
現在開発環境はXPでサーバ端末はWin2000を使用しています。


>お察しのとおり、ASP.NETのコードはサーバ上で実行されます。

やはり、一度サーバ上にアップロードする必要があるのですね。
一旦サーバへ保存し、そのファイルを参照する事で解決致しました。

input_txt.PostedFile.SaveAs("C:\test_file.csv")

FileOpen(fileNo, "C:\test_file.csv", OpenMode.Input)


[ メッセージ編集済み 編集者: ごん太 編集日時 2007-01-09 13:55 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-09 13:56
> 保存せずにクライアント側のみで処理をするとなると

セキュリティ的に問題があると思いませんか?
通常、ブラウザ内からクライアントマシンのリソースにはアクセスできないようになってますよね。。。
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2007-01-09 14:00
申し訳ありません。
書き込んだ後にそう感じ返信内容を編集していました。。。
1

スキルアップ/キャリアアップ(JOB@IT)