DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   ASP.NET (http://www.daniweb.com/forums/forum18.html)
-   -   file upload (http://www.daniweb.com/forums/thread164585.html)

kischi Dec 28th, 2008 12:23 pm
file upload
 
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?

iDeveloper Dec 28th, 2008 4:05 pm
Re: file upload
 
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.

kischi Dec 28th, 2008 5:44 pm
Re: file upload
 
I am not using Ajax. I using an ordinary button. So isn't that a regular postback?

iDeveloper Dec 28th, 2008 8:41 pm
Re: file upload
 
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();

kischi Dec 29th, 2008 2:33 am
Re: file upload
 
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?

iDeveloper Dec 29th, 2008 10:02 pm
Re: file upload
 
Quote:

Originally Posted by kischi (Post 766298)
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.

ruwanthaka Dec 29th, 2008 11:47 pm
Re: file upload
 
//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);

kischi Dec 30th, 2008 3:49 pm
Re: file upload
 
The autentication was allready set to Windows.

Quote:

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

kischi Dec 30th, 2008 4:12 pm
Re: file upload
 
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


All times are GMT -4. The time now is 1:13 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC