- - PR -
fileのUploadについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-20 13:25
WebMatrixで簡単なFileのDB登録を実験しています。
例えばローカルにあるxlsファイルをDBにBinaryで登録するといったものです。 ソースは以下ですが、エラーで:System.NullReferenceException: オブジェクト変数または With ブロック変数が設定されていません。となります。回避方法はないでしょうか? ------------------------------------------------- <%@ Page Language="VB" %> <script runat="server"> Sub objBtn_Click(sender As Object, e As EventArgs) Dim datum as Object Dim connectionString As String = "server='(local)'; trusted_connection=true; database='MatrixOrders'" Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString) Dim queryString As String = "INSERT INTO image_data(title,type,datum) VALUES(@title,@type,@datum)" Dim dbCom As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand dbCom.CommandText = queryString dbCom.Connection = dbConnection Dim dbParam_title As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter dbParam_title.ParameterName = "@title" dbParam_title.Value = datum.PostedFile.FileName dbParam_title.DbType = System.Data.DbType.String dbCom.Parameters.Add(dbParam_title) Dim dbParam_type As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter dbParam_type.ParameterName = "@type" dbParam_type.Value = datum.PostedFile.ContentType dbParam_type.DbType = System.Data.DbType.String dbCom.Parameters.Add(dbParam_type) Dim aryData(datum.PostedFile.ContentLength) As Byte datum.PostedFile.InputStream.Read(aryData,0,datum.PostedFile.ContentLength) Dim dbParam_datum As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter dbParam_datum.ParameterName = "@datum" dbParam_datum.Value = aryData(datum.PostedFile.ContentLength) dbParam_datum.DbType = System.Data.DbType.Binary dbCom.Parameters.Add(dbParam_datum) dbConnection.Open dbCom.ExecuteNonQuery dbConnection.Close End Sub </script> <html> <head> </head> <body> <form runat="server"> <p id="objBtn"> <input id="datum" style="WIDTH: 274px; HEIGHT: 20px" type="file" size="32" /> </p> <p> <asp:Button id="objBtn" onclick="objBtn_Click" runat="server" Text="Upload"></asp:Button> </p> </form> </body> </html> | ||||
|
投稿日時: 2005-05-07 05:50
まず、どの部分で発生するのか、特定してください。ソースを張られても、他人のソースを読むのは大変苦労します。 次に、エラーメッセージをよく読んでください。ASPの時にはオブジェクトという概念がなかったのだと思いますが、まず、オブジェクト指向について勉強しておいてください。 回避方法は簡単なのですが(参照する前にオブジェクトを作る)、どこで該当する参照をしているのかわからないため、何を作ればいいのかまで示せません。 _________________ | ||||
|
投稿日時: 2005-05-07 10:10
Jitta様ありがとうございます。
そうですね、何をしたいのかを書かなければわかりませんよね。。ソース見てわかれというほうが無謀だと気がつきました^^;すみません。 それで、やりたいことはローカルにあるワード・エクセルのファイルをDBにファイル名・ファイルタイプと一緒に格納したいということです。@ITでVS.NETのやり方が記載されてたのでそれをWebMatrixで試しているところです。オブジェクトの方は一通り勉強してみたのですがHTMLコントロール<input id="datum" type="file">で選択されたローカルファイルをDBに登録するといったものです。それぞれをファイル名:@title,ファイルタイプ:@type,バイナリーファイル:@datumとしてパラメタの値に入れたいのです。 たぶん、Dim datum as Objectとしながらinputオブジェクトとの関連付けがないからなのでしょうか? | ||||
|
投稿日時: 2005-05-07 21:44
AILightさんのところのサンプル
こちらはVS.NET、C#ですが、「.aspx.csファイル」のコードを「<script runat="server">」内に記述すれば・・・っと、C#からVB.NETへの変換が必要ですね。 行末のセミコロンを取ってください。 if文は、「if (式) {...}」ですので、「if 式 Then ... End If」に置き換えてください。 メソッド宣言も、「アクセスレベル 戻り値 メソッド名(引数) {...}」ですので、「アクセスレベル Sub|Function メソッド名(引数) As 型 ... End Sub|Function」(Subの場合、「As 型」不要)に置き換えてください。 C#では、変数の宣言は「型 変数名」なので、VB.NET用に「Dim 変数名 As 型」に置き換えてください。 C#では、文の終わりはセミコロンで、改行は無視されます。セミコロンまでに現れる改行は、すべてつないでください。 配列は、C#では[]を使います。VB.NET用に、()に置き換えてください。 _________________ |
1