470,648 Members | 1,529 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,648 developers. It's quick & easy.

Web Forms / HTTP File Upload / String.Split a StreamReader.ReadLine() string

Hello one and all,

I'm developing an Asp.NET system to take a CSV file uploaded via the web,
parse it, and insert the values into an SQL database. My sticking point
comes when I try to split() the string returned by readline() on the file.

The following code snippet works for me:
tokens = "one,two,three,four".Split(",")
for each token in tokens
response.write("<td>"+token+"</td>")
next

However, if I take the next line in the CSV, read using
StreamReader.ReadLine on the PostedFile.InputStream, I receive "Object
reference not set to an instance of an object." which I have narrowed down
to be my string holding the line. Further investigation reveals that no
other string member functions work on my line (.ToCharArray, .ToString,
etc).

I suspect that StreamReader.ReadLine is not correctly returning a string,
even though Response.Write(line) displays what I would expect.

I would appreciate any help or suggestions anybody can offer as to what's
going on here.

Thanks,

Andy
-- code --

<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<link href="adwords.css" rel="stylesheet" type="text/css" media="screen" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload CSV</title>
</head>
<body>

<script runat="server">
Sub UploadFile_Clicked(Sender as Object, e as EventArgs)
Dim str As Stream

str = loFile.PostedFile.InputStream()
Dim sr As StreamReader = New StreamReader(str)

Dim tokens as String() = Nothing
Dim line, token, t as String

Dim i as integer
for i = 1 to 6
line = sr.ReadLine()
next i
response.write("<table>")

do
line = sr.ReadLine()
response.write("<tr>")
tokens = line.Split(ControlChars.Tab)
for each token in tokens
response.write("<td>"+token+"</td>")
next
response.write("</tr>")
loop until line is nothing
response.write("</table>")

sr.close()

End sub
</script>

<form action="upload.aspx" method="post" enctype="multipart/form-data"
runat="server">
<fieldset>
<legend>Select a file to upload:</legend>
<p><input id="loFile" type="file" runat="server"></p>
<p><input type="submit" OnServerClick="UploadFile_Clicked"
class="clientloginsubmit" name="Submit" value="Upload AdWords CSV"
runat="server" /></p>
</fieldset>
</form>

</body>
</html>
Jul 19 '05 #1
5 12107
This forum is for classic asp questions.

If this were in classic asp, personally I'd use ado to connect to the csv
and treat it like a database table.
"Andy Mee" <an**@RemoveThisSubDomain.itqsolutions.net> wrote in message
news:bp*********@hercules.btinternet.com...
Hello one and all,

I'm developing an Asp.NET system to take a CSV file uploaded via the web,
parse it, and insert the values into an SQL database. My sticking point
comes when I try to split() the string returned by readline() on the file.

The following code snippet works for me:
tokens = "one,two,three,four".Split(",")
for each token in tokens
response.write("<td>"+token+"</td>")
next

However, if I take the next line in the CSV, read using
StreamReader.ReadLine on the PostedFile.InputStream, I receive "Object
reference not set to an instance of an object." which I have narrowed down
to be my string holding the line. Further investigation reveals that no
other string member functions work on my line (.ToCharArray, .ToString,
etc).

I suspect that StreamReader.ReadLine is not correctly returning a string,
even though Response.Write(line) displays what I would expect.

I would appreciate any help or suggestions anybody can offer as to what's
going on here.

Thanks,

Andy
-- code --

<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<link href="adwords.css" rel="stylesheet" type="text/css" media="screen" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload CSV</title>
</head>
<body>

<script runat="server">
Sub UploadFile_Clicked(Sender as Object, e as EventArgs)
Dim str As Stream

str = loFile.PostedFile.InputStream()
Dim sr As StreamReader = New StreamReader(str)

Dim tokens as String() = Nothing
Dim line, token, t as String

Dim i as integer
for i = 1 to 6
line = sr.ReadLine()
next i
response.write("<table>")

do
line = sr.ReadLine()
response.write("<tr>")
tokens = line.Split(ControlChars.Tab)
for each token in tokens
response.write("<td>"+token+"</td>")
next
response.write("</tr>")
loop until line is nothing
response.write("</table>")

sr.close()

End sub
</script>

<form action="upload.aspx" method="post" enctype="multipart/form-data"
runat="server">
<fieldset>
<legend>Select a file to upload:</legend>
<p><input id="loFile" type="file" runat="server"></p>
<p><input type="submit" OnServerClick="UploadFile_Clicked"
class="clientloginsubmit" name="Submit" value="Upload AdWords CSV"
runat="server" /></p>
</fieldset>
</form>

</body>
</html>

Jul 19 '05 #2
> This forum is for classic asp questions.

Apologies... if I scan my news server for ASP groups, I find precisely five.
Discounting Italian, German and Hebrew groups, I'm left with three. None of
them seemed to specify what ASP they were dealing with...

If this were in classic asp, personally I'd use ado to connect to the csv
and treat it like a database table.


Thanks for that -- I'll look into the ADO stuff in .NET.

Still baffled by the completely nonsensical error though :)

Andy.
Jul 19 '05 #3
Use these "words" as your search through the newsgroups:

aspnet
adonet
dotnet (broad)

Ray at work

"Andy Mee" <an**@RemoveThisSubDomain.itqsolutions.net> wrote in message
news:bp**********@sparta.btinternet.com...
This forum is for classic asp questions.
Apologies... if I scan my news server for ASP groups, I find precisely

five. Discounting Italian, German and Hebrew groups, I'm left with three. None of them seemed to specify what ASP they were dealing with...

If this were in classic asp, personally I'd use ado to connect to the csv and treat it like a database table.


Thanks for that -- I'll look into the ADO stuff in .NET.

Still baffled by the completely nonsensical error though :)

Andy.

Jul 19 '05 #4
Andy Mee wrote:
This forum is for classic asp questions.


Apologies... if I scan my news server for ASP groups, I find
precisely five. Discounting Italian, German and Hebrew groups, I'm
left with three. None of them seemed to specify what ASP they were
dealing with...

The .dotnet.* groups are set up for .Net questions.

Bob Barrows
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.
Jul 19 '05 #5
http://www.able-consulting.com/MDAC/...crosoftJetText
"Andy Mee" <an**@RemoveThisSubDomain.itqsolutions.net> wrote in message
news:bp**********@sparta.btinternet.com...
This forum is for classic asp questions.
Apologies... if I scan my news server for ASP groups, I find precisely

five. Discounting Italian, German and Hebrew groups, I'm left with three. None of them seemed to specify what ASP they were dealing with...

If this were in classic asp, personally I'd use ado to connect to the csv and treat it like a database table.


Thanks for that -- I'll look into the ADO stuff in .NET.

Still baffled by the completely nonsensical error though :)

Andy.

Jul 19 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Michael Powe | last post: by
4 posts views Thread by Amit Maheshwari | last post: by
1 post views Thread by bbepristis | last post: by
reply views Thread by Bomac8 | last post: by
1 post views Thread by Korara | last post: by
reply views Thread by warner | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.