35 messaggi dal 06 ottobre 2007
Ciao a tutti.

Con ASP.NET 2.0 Server.MapPath(percorsofile); funzionava e ti ritornava il percorso del file da caricare.

Ora sto programmando con .net 3.5 e dice che non esiste Server.

Qualcuno saprebbe aiutarmi? Come fare a ritornare il percorso?

Ecco lo script:


string strSaveFileAs;
            //strSaveFileAs = Server.MapPath(("uploads/" + myFileUpload.FileName));
            strSaveFileAs = Server.MapPath(("uploads/" + myFileUpload.FileName));
            lblFileName.Text = myFileUpload.PostedFile.FileName;
            lblFileType.Text = myFileUpload.PostedFile.ContentType;
            int i = myFileUpload.PostedFile.ContentLength;
            lblFileSize.Text = i.ToString();
            try
            {
                if (myFileUpload.HasFile)
                {
                    myFileUpload.SaveAs(strSaveFileAs);
                    strStatusMessage = ("Il file è stato salvato con successo: " + strSaveFileAs);
                }
                else
                {
                    strStatusMessage = "Non hai selezionato nessun file da salvare.";
                }
            }
            catch (Exception Ex)
            {
                strStatusMessage = ("PROBLEMA. Impossibile caricare il file.  " + ("Errore dovuto da: " + Ex.Message));
            }
            finally
            {
                lblSaveResults.Text = strStatusMessage;
            }

438 messaggi dal 04 agosto 2002
Contributi
ciao,

.net 3.5 è un'estensione del framework 2.0 non è un nuovo framework. Ciò significa che l'oggetto Server continua ad esistere ed a funzionare esattamente come prima. Commentando server.mappath il resto del codice funziona correttamente?

v
Non capisco qual'è tuo problema :
si usa cosi es

  string filepath = Server.MapPath("~/xml/" + nomefile+ ".xml");


Ciao

Corso SEO DeepSEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

molto strano, Server è una proprietà dell'oggetto Page quindi devi ritrovartela per forza. Per caso sei in uno user control o in un custom control?

HTH

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
22 messaggi dal 04 settembre 2008
Ciao.

Funziona benissimo su pagine .aspx con codice c# separato.

Mentre qûesto codice si trova in una web part!!

Cambia qcl?

saluti e grazie
Cosa vuol dire questo codice si trova in una webpart???

è all'interno di un evento relativo alla webpart? qual'è il problema ? non ti prende correttamente il percoso?

Ciao

Corso SEO DeepSEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

prova con System.Web.HttpContext.Current.Server.MapPath

HTH

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
22 messaggi dal 04 settembre 2008
Si trova in un metodo, che viene richiamato dall'evento Button_Click...
È così difficile da capire?

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Security.Principal;
using System.Web.Security;

namespace Tools
{
    [Guid("978f2abe-9efe-4d39-b2a4-15afb5352b81")]
    public class BachecaElettronica : System.Web.UI.WebControls.WebParts.WebPart
    {
        public BachecaElettronica()
        {
        }

        #region DICHIARAZIONE

        //stringa di connessione al database
        private string stringaDiConnessione = "Data Source=sgv003;Initial Catalog=Tools;Integrated Security=True";
        //percorso allegato
        protected string percorsoAllegato = string.Empty;
        //utente autenticato
        protected string Utente = string.Empty;
        //label
        protected Label lblAnnuncio = new Label();
        protected Label lblUploadFile = new Label();
        //textbox
        protected TextBox txtAnnuncio = new TextBox();
        //uploadfile
        protected FileUpload UploadFile = new FileUpload();
        //botton
        protected Button btnConferma = new Button();
        protected Button btnAnnulla = new Button();

        [WebBrowsable(true),
        WebDisplayName("Stringa di Connessione"),
       WebDescription("Inserire Stringa di Connessione"),
        Personalizable(PersonalizationScope.User)]

        public string CNString //per modificare la stringa di connessione tramite web
        {
            get { return this.stringaDiConnessione; }
            set { this.stringaDiConnessione = value; }
        }
        #endregion DICHIARAZIONE

        #region INIZIALIZZAZIONE

        protected override void CreateChildControls()
        {
            //lblAnnuncio
            lblAnnuncio.ID = "lblAnnuncio";
            lblAnnuncio.Width = 500;
            lblAnnuncio.Text = "Inserire qui sotto il testo dell'annuncio";
            this.Controls.Add(lblAnnuncio);
            //txtAnnuncio
            txtAnnuncio.ID = "txtAnnuncio";
            txtAnnuncio.Width = Unit.Pixel(600);
            txtAnnuncio.Height = Unit.Pixel(250);
            txtAnnuncio.TextMode = TextBoxMode.MultiLine;
            this.Controls.Add(txtAnnuncio);

            //lblUploadFile
            lblUploadFile.ID = "lblUploadFile";
            lblUploadFile.Width = 300;
            lblUploadFile.Text = "Eventualmente caricare un allegato";
            this.Controls.Add(lblUploadFile);
            //UploadFile
            UploadFile.ID = "UploadFile";
            UploadFile.Width = 300;
            this.Controls.Add(UploadFile);

            //button
            btnConferma.Text = "Salva annuncio";
            btnConferma.Click += new EventHandler(btnConferma_Click);
            //button
            btnAnnulla.Text = "Annulla";
            btnAnnulla.Click += new EventHandler(btnAnnulla_Click);
            this.Controls.Add(btnAnnulla);
        }
        #endregion INIZIALIZZAZIONE

        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);
        }   //non utilizzato ancora

        #region CODICEHTML

        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            writer.Write("<center><table><tr><td height=50></td></tr><tr><td><h2 style=\"text-align=center; color=gray\">Inserimento annuncio in Bacheca</h2></td></tr><tr><td>");
            lblAnnuncio.RenderControl(writer);
            writer.Write("</td></tr>");

            writer.Write("<tr><td>");
            txtAnnuncio.RenderControl(writer);
            writer.Write("</td></tr>");

            writer.Write("<tr><td>");
            lblUploadFile.RenderControl(writer);
            writer.Write("</td></tr>");

            writer.Write("<tr><td>");
            UploadFile.RenderControl(writer);
            writer.Write("</td></tr>");

            writer.Write("<tr><td>");
            btnConferma.RenderControl(writer);
            writer.Write("&nbsp&nbsp&nbsp&nbsp");
            btnAnnulla.RenderControl(writer);
            writer.Write("</td></tr></table></center>");

        }
        #endregion CODICEHTML

        #region EVENTOUPLOAD
        protected void CaricaAllegato()
        {
            //Se FU contiene un file.
            if (UploadFile.HasFile)
            {
                //Definisco l'indirizzo della cartella dove le immagini verranno salvate
                string cartellaDestinazione = "~/immagini/";

                //Definisco l'indirizzo della cartella più il nome del file che carico.
                //Tramite il parametro FileName ricavo il nome del file che sto caricando.
                string nomeCartellaPiuNomeFile = cartellaDestinazione + UploadFile.FileName;

                //Carico e salvo il file tramite il metodo SaveAs. Come parametri gli passo
                //nomeCartellaPiuNomeFile all'interno di Server.MapPath() che mi ritorna 
                //la posizione della mia root sul server.
                UploadFile.SaveAs(nomeCartellaPiuNomeFile); //MapPathSecure

                //Passo il nome del file che sto caricando in maniera tale
                //che cambia il valore che verrà inserito nella query.
                percorsoAllegato = cartellaDestinazione + UploadFile.FileName;

                //inserisco l'utente
                IPrincipal user = this.Context.User;
                Utente = user.Identity.Name;
            }
            else 
            {
                percorsoAllegato = "Non ci sono allegati per questo annuncio";

                //inserisco l'utente
                IPrincipal user = this.Context.User;
                Utente = user.Identity.Name;  
            }
        }
        #endregion EVENTOUPLOAD

        protected void InserisciAnnuncio(string testo, string utente, string allegato)
        {
            SqlConnection connessione = new SqlConnection(stringaDiConnessione);
            connessione.Open();
            string strQuery = "INSERT INTO Annunci (annuncio_data, annuncio_testo, annuncio_utente, annuncio_allegato, annuncio_stato) VALUES ('GETDATE()', '" + testo + "','" + utente + "','" + allegato + "', 'Non scaduto')";
            SqlCommand commando = new SqlCommand(strQuery, connessione);
            commando.ExecuteScalar();
            connessione.Close();
        }
        #region EVENTIBOTTONI

        protected void btnConferma_Click(object sender, EventArgs e)
        {
            CaricaAllegato();
            InserisciAnnuncio(txtAnnuncio.Text, Utente, percorsoAllegato);
        }
        protected void btnAnnulla_Click(object sender, EventArgs e)
        {

        }
        #endregion EVENTIBOTTONI
    }
}


Proverò come mi hai suggerito. farò sapere.

Comunque il codice funziona se lo uso in una pagina .apsx con codice c# in file separato!

Mentre nella web part mi dà errore, e solo su Server.MapPath!

Non riconosce Server! E neanche Intellisense non lo trova.
Modificato da sharepointhelp il 19 settembre 2008 14.54 -

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.