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

A

Andy Mee

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>
 
T

TomB

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.
 
A

Andy Mee

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.
 
R

Ray at

Use these "words" as your search through the newsgroups:

aspnet
adonet
dotnet (broad)

Ray at work
 
B

Bob Barrows

Andy said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top