Avatar billede xitmorph Nybegynder
30. juni 2005 - 10:25 Der er 11 kommentarer og
1 løsning

file upload funktion der indsætter url i MSsql database

jeg har lavet denne funktion på en side

protected void Button2_Click(object sender, EventArgs e)
    {
        string StrFileName = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\") + 1);
        string StrFileType = FileUpload1.PostedFile.ContentType;
        int IntFileSize = FileUpload1.PostedFile.ContentLength;

        if (IntFileSize <= 0)
            Response.Write(" <font color='Red' size='2'>Der er sket en fejl med " + StrFileName + " prøv igen..</font>");
        else
        {
            FileUpload1.PostedFile.SaveAs("C:\\Inetpub\\wwwroot\\mappe\\Produkter\\" + StrFileName);
            FileUpload1.PostedFile.SaveAs("C:\\Inetpub\\wwwroot\\mappe\\Produkter\\thumbs\\" + StrFileName);                                                                                             
            Response.Write("gemt");
        }
    }

i min produkt tabel i min db er der en colum ImageUrl der skal min billede sti være, men jeg er ikke helt med på hvordan men query skal være.. jeg er klar over at jeg skal bruge (StrFileName) til at navngive billedet. Håber i kan se hvor det er jeg vil hen.. :-}
Avatar billede snepnet Nybegynder
30. juni 2005 - 10:32 #1
hej xitmorph :o)

du skal nok have fingre i dit productid før du indsætter går jeg ud fra... altså så du kan lægge stien til billedet ind på den rigtige række i tabellen.
og så får du vel bare noget i stil med :
update produkt set imageurl = '<strfilename>' where productid = <productid>

har jeg misforstået dig ?

mvh
Avatar billede xitmorph Nybegynder
30. juni 2005 - 11:31 #2
det tror jeg ikke.. men kender du ikke en metode der gør det lidt mere brugervenligt fordi det jeg har lavet er lidt "bob bob".. men her er det..

//først validere jeg om modelnummeret findes//
private bool CheckModelNumber(string ModelNumber)
            {
                //SqlConnection cnn;
                SqlCommand cmd;
                SqlDataReader dr;

                SqlConnection cnn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
                //cnn = new SqlConnection("server=*********;uid=Hvidsted;pwd=******;database=****");
                cmd = new SqlCommand("Select * from CMRC_Products where ModelNumber='" + ModelNumber + "'",cnn);
                cnn.Open();
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
       
                    if (string.Compare(dr["ModelNumber"].ToString(),ModelNumber,false)==0)
                    {
                        cnn.Close();
                        return true;
                    }
                }
                cnn.Close();
                return false;
            }
// ok det eksisterede ikke.. fint så kan vi oprette//

private int InsertRecord(string ModelName, string ModelNumber,string ProductImage, string UnitCost, string Description, string CategoryID)
        {
            //SqlConnection cnnIns;
            SqlCommand cmd;
            SqlConnection cnnIns = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
            cmd = new SqlCommand("insert into CMRC_Products (ModelName, ModelNumber,ProductImage, UnitCost, Description, CategoryID ) values ('" + ModelName + "', '" + ModelNumber + "',CAST('" + UnitCost + "' as money), '" + Description + "',  '" + CategoryID + "')", cnnIns);
           
            int rowsAffected = 0;
            cnnIns.Open();
            try
            {
                rowsAffected = cmd.ExecuteNonQuery();
            }
            finally
            {
                cnnIns.Close();
            }
       
            return rowsAffected;
        }

det er så her jeg kører lidt af sporet.. fordi det skal være filnavnet der skal ned i dben
Avatar billede xitmorph Nybegynder
30. juni 2005 - 11:32 #3
jeg er klar over at der mangler en ,'" + ProductImage+ "', det gik lidt hurtigt:-)
Avatar billede xitmorph Nybegynder
30. juni 2005 - 13:07 #4
protected void Button1_Click(object sender, System.EventArgs e)
        {
            if(IsValid)
            {
                if (CheckModelNumber(txtModelNumber.Value))
                {
                    UsrLabel.Font.Bold = true;
                    UsrLabel.Text = "Der er en vare med det modelnummer..";
                    UsrLabel.Visible = true;
                }
                else
                {
                    InsertRecord(txtModelNumber.Value, txtModelName.Value,FileUpload1.Value, txtUnitCost.Value, txtDescription.Value, DropDownList1.SelectedValue);                   
                    UsrLabel.Font.Bold = true;
                    UsrLabel.Text = "Tak for det...";
                    UsrLabel.Visible = true;
                }
            }
        }
Avatar billede snepnet Nybegynder
30. juni 2005 - 13:21 #5
du kan kombinere de to handlers (altså for button 1 og 2).

i din else i din button1_click handler kan du jo sørge for at gøre det med filen du gør i din button2 handler + det den gør i forvejen.

mvh
Avatar billede xitmorph Nybegynder
30. juni 2005 - 13:36 #6
ja ok.. men der jeg gerne vil hen er at når man har valgt et billede man vil uploade trykker man på upload knappen. Når den er trykket smider den filen op til serveren, og fjerner stien så der kun står mitbillede.jpg i FileUpload boxen og skriver filen er uploadet eller noget i den stil. Der efter kan man så oprette varen med opret vare knappen det med at indsætte i else {} vil jeg helst undlade.
Avatar billede snepnet Nybegynder
30. juni 2005 - 13:40 #7
så har du jo et billede liggende selvom man ikke opretter varen ?!?
men.... du kan gemme navnet i viewstate eller session, og så bruge det når der klikkes på den næste knap:

protected string FileName
{
  get{return ViewState["FileName"];}
  set{ViewState["FileName"] = value;}
}

og så måske lidt fejlhåndtering omkring det.

mvh
Avatar billede xitmorph Nybegynder
30. juni 2005 - 13:53 #8
ja men det gør ikke så meget.. fordi jeg har en side der lister det der ligger i billede mappen på serveren. så man kan se alle de filer der er uploadet til den. så det gør ikke så meget at man kan uploade uden at oprette den til dben. Den skal jo self. skrive fejl hvis der er en fil med samme navn..

ja ok.. hmm.. ja..
Avatar billede xitmorph Nybegynder
30. juni 2005 - 15:00 #9
hejsa jeg har selv løst det.. ved at gøre sådan:

protected void Button2_Click(object sender, EventArgs e)
        {           

            string StrFileName = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\") + 1);
            string StrFileType = FileUpload1.PostedFile.ContentType;
         
            int IntFileSize = FileUpload1.PostedFile.ContentLength;

            if (IntFileSize <= 0)
                Response.Write(" <font color='Red' size='2'>Der er sket en fejl med " + StrFileName + " prøv igen..</font>");
            else
            {
                FileUpload1.PostedFile.SaveAs("C:\\Inetpub\\wwwroot\\Hvidsted\\Produkter\\" + StrFileName);
                FileUpload1.PostedFile.SaveAs("C:\\Inetpub\\wwwroot\\Hvidsted\\Produkter\\thumbs\\" + StrFileName);

                txtProductImage.Value = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\") + 1);
                Response.Write("gemt");               
            }
        }

det den gør er at den bare smider filnavnet op i textboxen hvor billede´navnet skal være jeg har bare gjort den ReadOnly så der var den.. :-)
Avatar billede snepnet Nybegynder
30. juni 2005 - 15:33 #10
super :o)
Avatar billede snepnet Nybegynder
28. juli 2005 - 18:29 #11
hej xitmorph - how goes?
(du får et svar, hvis du kunne bruge noget af det til noget)
mvh
Avatar billede snepnet Nybegynder
07. september 2005 - 17:10 #12
xitmorph?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester