NomNomNom
NomNomNom

Reputation: 871

asp file upload control, which one should be use?

ok, i found this on internet to upload some files.

if (FileUpload1.HasFile)
{
    //create the path to save the file to
    string fileName = Path.Combine(@"E:\Project\Folders", FileUpload1.FileName);
    //save the file to our local path
    FileUpload1.SaveAs(fileName);
}

and this

//check to make sure a file is selected
if (FileUpload1.HasFile)
{
    //create the path to save the file to
    string fileName = Path.Combine(Server.MapPath("~/Files"), FileUpload1.FileName);
    //save the file to our local path
    FileUpload1.SaveAs(fileName);
}

what is the difference, which one to use? i got confuse. by the way, if i can store file path in database, and next time when i want to delete or see that file, how can i retrieve that? so let say, first i add a record to database and uploaded a .doc file / excel file, next time when i want to edit that record, i want to retrieve the uploaded file, and show it in UI. thanks.

Upvotes: 0

Views: 520

Answers (3)

karthi
karthi

Reputation: 470

//if you already know your folder is: E:\ABC\A then you do not need to use Server.MapPath, this last one is needed if you only have a relative virtual path like ~/ABC/A and you want to know the real path in the disk...

    if (FileUpload1.HasFile)
    {
        string fileName = Path.Combine(@"E:\Project\Folders", FileUpload1.FileName);// they know the right path so .they using directly  
        FileUpload1.SaveAs(fileName);
    }

    if (FileUpload1.HasFile)
    {
        string fileName = Path.Combine(Server.MapPath("~/Files"), FileUpload1.FileName);// i don't know path is correct or not so they using Server.MapPath. . .
        FileUpload1.SaveAs(fileName);
    }

Upvotes: 0

qwr
qwr

Reputation: 3670

use second one cause it will convert relative or virtual path to real path itself . .u should get path from db and use it to resolve the path the same way you are storing and do manipulation on it delete and etc. for displaying url="~/Files/yourfilename" yourfilefromdb -u retrieve it from db

string filepath = Path.Combine(Server.MapPath("~/Files"), yourfilefromdb);
File.Delete(filepath);

for showing
if it accessible directly u can just write url="~/Files/yourfilefromdb"

Upvotes: 1

Rumit Parakhiya
Rumit Parakhiya

Reputation: 2714

The only difference in two code blocks posted you is in specifying file path.

In case 1, static location is specified to save the file. It can cause problem, if location to save files differ in your production environment. It will require rebuild in that case.

While, in case 2, location is specified using relative path. So, it will always save files at "/Files" location.

Upvotes: 0

Related Questions