Hi I am trying to upload an excel file to the server.
But it won't work, every time I am trying to upload an xls file and press the button. it writes: No file was uploaded.

as if i had no file. you are welcome to try on: http://radio.web.surftown.dk/admin/indset_program.aspx
the top section where you can upload a file from your computer

my code looks like this:

protected void Button2_Click(object sender, EventArgs e)
{
string sSavePath;

sSavePath = "../";

if (FileUpload.PostedFile != null)
{
// Check file size (mustn’t be 0)
HttpPostedFile myFile = FileUpload.PostedFile;
int nFileLen = myFile.ContentLength;
if (nFileLen == 0)
{
lblOutput_excel.Text = "No file was uploaded.";
return;
}


if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".xls")
{
lblOutput.Text = "The file must have an extension of xls";
return;

}

byte[] myData = new Byte[nFileLen];
myFile.InputStream.Read(myData, 0, nFileLen);

System.IO.FileStream newFile
= new System.IO.FileStream(Server.MapPath(sSavePath),
System.IO.FileMode.Create);
newFile.Write(myData, 0, myData.Length);
newFile.Close();

}



}

Hope someone can help?

FileUploader control does not work in the upload panel. In other words, it isn't Ajax compatible control. You need to do a regular postback through a trigger. It's a security constraint in the design of the component. You can look it up on msdn.

I am not using Ajax. I using an ordinary button. So isn't that a regular postback?

Okay, i just saw a reference to Update Panel in your page code, but your upload control is declared outside of it. Use breakpoints and run your page in debug mode. Set break points inside of the first if statement and see what you're getting in FileUpload.PostedFile. Check for any internal errors and property values.

Also, don't use system.io to save the file. You can do so with FileUpload.PostedFile.SaveAs();

Ok I put some breakpoints at:
if (FileUpload.PostedFile != null)
and
int nFileLen = myFile.ContentLength;
And when i move the curser over:
int nFileLen = myFile.ContentLength;
it writes: myFile.ContentLength 0

does that meen that it thinks that the file doesn't fill more than 0?
and how do I change that?

Ok I put some breakpoints at:
if (FileUpload.PostedFile != null)
and
int nFileLen = myFile.ContentLength;
And when i move the curser over:
int nFileLen = myFile.ContentLength;
it writes: myFile.ContentLength 0

does that meen that it thinks that the file doesn't fill more than 0?
and how do I change that?

Open your web.config. Look at the <authentication> tag and check the mode. Is it set to "Forms"? If so, change it to "Windows". This *should* work. Note, however, that anybody running that page will run as aspnet user. You can use impersonation to impersonate an account with less privileges. Now, don't judge me on this but this probably makes sense since you're uploading data to the server, i'd imagine you have to be able to do this as a privileged user, hence the windows authentication mode. Hope that helps.

//use System.Web.UI.HtmlControls.HtmlInputFile >> filSelectFile
string nameOfFile = filSelectFile.Value;//Get selected file
//Get actual file name
int last = nameOfFile.LastIndexOf("\\");
nameOfFile = nameOfFile.Substring(last + 1);
//Saving location
//this must be virtual folder of your web server
string uploadFolder = ConfigurationSettings.AppSettings["FileUploadFolder"];
nameOfFile = uploadFolder +"\\" + nameOfFile;
//Upload the file
filSelectFile.PostedFile.SaveAs(nameOfFile);

The autentication was allready set to Windows.

//use System.Web.UI.HtmlControls.HtmlInputFile >> filSelectFile
string nameOfFile = filSelectFile.Value;//Get selected file
//Get actual file name
int last = nameOfFile.LastIndexOf("\\");
nameOfFile = nameOfFile.Substring(last + 1);
//Saving location
//this must be virtual folder of your web server
string uploadFolder = ConfigurationSettings.AppSettings["FileUploadFolder"];
nameOfFile = uploadFolder +"\\" + nameOfFile;
//Upload the file
filSelectFile.PostedFile.SaveAs(nameOfFile);

Where would I put this into the code. Or is this the only code that should be on the page instead of my other code?

Thanks

I got it to work now, it was just a stupid typo. Sorry I didn't see it earlier.

But thank a mill for your help. :-D

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.