588 messaggi dal 11 febbraio 2013
Eseguendo questo loop ottengo sempre lo stesso xml

var filesUploaded = hiddenFieldXMLuploaded.Value.ToString().Split('-');                
            foreach (var file in filesUploaded)
            {
                string filename = Server.MapPath("~/SFA_XML_Upload/" + file);
                var doc = XDocument.Load(filename);
                Response.Write(doc.ToString());
            }


Nella pagina ho un fileUpload dove fare l'upload multiplo di piu xml nella stessa cartella
cosa sbaglio
10.600 messaggi dal 09 febbraio 2002
Contributi
Ciao,
hai messo un breakpoint per vedere se il valore di hiddenFieldXMLuploaded.Value è quello che ti aspetti?
Ma... hiddenField? Come mai leggi i percorsi dei file da un campo hidden?
Segui questo articolo per l'upload multiplo.
https://www.c-sharpcorner.com/UploadFile/99bb20/upload-multiple-files-using-fileupload-control-in-Asp-Net-4/

ciao,
Moreno
Modificato da BrightSoul il 29 aprile 2018 21.12 -

Enjoy learning and just keep making
588 messaggi dal 11 febbraio 2013
Ciao Moreno
meno male che ci sei :)

Faccio esattamente una cosa simile al tuo link per l'upload
Il problema è quando clicco il bottone per salvare sul db i record letti
Uso l'hidden solo per passare i nomi al metodo load
Ho messo 2000 break point e il metodo load riceve correttamente i nomi ("file1.xml","file2.xml...)
ma quando salvo su db ottengo primary key exception perchè ritorna sempre il primo file selezionato
Ho due bottoni uno per l'upload e un altro per salvare su db
ecco quest'ultimo
 protected void btnSaveDatabase_Click(object sender, EventArgs e)
    {
        var filesUploaded = hfXMLuploaded.Value.ToString().Split('-');
        try
        {
            int ordcliRowsInserted = 0;
            int riorclRowsInserted = 0;
            //IEnumerable<string> filesName = Directory.EnumerateFiles(Server.MapPath("~/SFA_XML_Upload/"),"*")
            //                                         .Select(f=>Path.GetFileName(f));
            foreach (var file in filesUploaded)
            {
                string filename = Server.MapPath("~/SFA_XML_Upload/" + file);

                var doc = XDocument.Load(filename);
                Response.Write(doc.ToString());
                //ordcliRowsInserted += SaveDataBaseOrdcli(ReadOrdcli(doc, filename));
                //riorclRowsInserted += SaveDataBaseRiorcl(ReadRiorcl(doc, filename));
                
            }


non capisco perchè
588 messaggi dal 11 febbraio 2013
Ho notato che se copio e incollo due xml a mano ed eseguo il codice sopra nella pagina vengono stampati correttamente i due
file

cosa che non accade con il processo di uplaod

protected void btnUpload_Click(object sender, EventArgs e)
    {
        try
        {          
            String folderPath = Server.MapPath("~/SFA_XML_Upload/");
            if (!Directory.Exists(folderPath))
                 Directory.CreateDirectory(folderPath);

            var invalidFiles = new List<string>();
            var validFiles = new List<string>();
            if (Request.Files.Count > 0 && Request.Files.Count < 11)
            {
                HttpFileCollection filesCollection = Request.Files;
                for (int i = 0; i < filesCollection.Count; i++)
                {
                    HttpPostedFile file = filesCollection[i];
                   
                    if (file.ContentLength > 0 && 
                        !String.IsNullOrEmpty(file.FileName) && 
                        Path.GetExtension(file.FileName).ToLower() == ".xml" && 
                        file.FileName.Length==25 &&
                        file.FileName.StartsWith("0_dati_"))
                    {
                        string fileToSave = Path.Combine(folderPath, Path.GetFileName(file.FileName));
                        File.Delete(Path.Combine(folderPath, fileToSave)); // SE ESISTE LO CANCELLO
                        fileUpLoad.SaveAs(folderPath + Path.GetFileName(file.FileName));
                        validFiles.Add(file.FileName);
                    }
                    else
                    {
                        invalidFiles.Add(file.FileName);
                    }
                }
                
                filesUploaded.Text += validFiles.Count > 0 ? "Files validi: " + string.Join(", ", validFiles.ToArray()) : ""; 
                filesNotUploaded.Text = invalidFiles.Count > 0 ? "Files non validi: " + string.Join(", ", invalidFiles.ToArray()): "";

                hfXMLuploaded.Value = string.Join("-", validFiles.ToArray());
                btnSaveDatabase.Visible = fileUpLoad.HasFile;

            }
            else
            {
                Response.Write("<script>alert('Nessun file selezionato oppure superato il limite di 10 files!');</script>");
            }
        }
        catch (Exception ex)
        {
            errMsg.Text = "msg: " + ex.Message + "stack: " + ex.StackTrace + "source: " + ex.Source + "innerEx: " + ex.InnerException;
        }
        finally
        {
            btnUpload.Enabled = false;
        }
    }


in pratica i nomi dei file nella cartella sono diversi ma il contenuto è lo stesso: quello del primo xml selezionato
se utilizzo il metodo di upload per .net 4.5 infatti funziona
ma a me serve quello per 4.0
Modificato da jjchuck il 30 aprile 2018 13.20 -
588 messaggi dal 11 febbraio 2013
Errore stupido nel metodo save

file.SaveAs(folderPath + Path.GetFileName(file.FileName));

anziche fileUpLoad che è appunto il controllo nella pagina

scusate

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.