1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Upload Em C# Aspnet

Discussão em 'Web Development' iniciada por ButterflyEffect, 27 de Março de 2008. (Respostas: 12; Visualizações: 3739)

  1. ButterflyEffect

    ButterflyEffect Power Member

    Código:
    SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrin  gs["IGMConnectionString"].ConnectionString);
            string directorio = Server.MapPath("files");
            if (Upload.HasFile == false)
            {
                erro.Text = "falta o ficheiro!";
            }
            else
            {
                Upload.SaveAs(directorio + "\\" + Upload.PostedFile.FileName);
    
     //erro.Text = "ok! <br> ficheiro:" + FileUpload1.FileName + " <br> tamanho:" + FileUpload1.PostedFile.ContentLength + "<br> content type:" + FileUpload1.PostedFile.ContentType + "<br><br> pasta:" + Path;
            }
    try
                    {
    SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["IGMConnectionString"].ConnectionString.ToString());
                        SqlCommand cmd2 = new SqlCommand("INSERT INTO estrategias (imagem) VALUES (@imagem)", cn);
     }
                    catch (Exception ex)
                    { 
                       Response.Write( ex.ToString()); 
                    }
    tenho este codigo para upload de uma imagem numa colega funcionava a mim da erros no directorio.Podiam ajudar-me e verificar codigo???
     
    Última edição pelo moderador: 29 de Março de 2008
  2. oi,

    Para além de colocares o código era tão ou mais útil colocares também o erro que estas a obter!

    Erros no directorio poderá ser problemas de escrita, permissões... whatever

    cumps,
     
    Última edição: 28 de Março de 2008
  3. ButterflyEffect

    ButterflyEffect Power Member

    eu disse em cima e um erro de directorio.afinal o directorio e msm o que?:sad:
     
  4. alfinete

    alfinete Power Member

    primeiro poes no web config o caminho para onde queres que va o upload

    Código:
    <add key="upload" value="\Documents and Settings\jaribeiro\Ambiente de trabalho\acordaos\decisoes\PDF"/>
    no file c# referencias esse caminho

    Código:
    private string upload = ConfigurationManager.AppSettings.Get("upload");
    

    e poes este code

    Código:
     //faz o upload chamando [grava_upLoad]
            private bool upLoad()
            {
    
                bool resul = true;
    
               
                    //***** temporariamente inibido
                          
                    string base_path_dir;
                  
                    //*****
    
                    HttpPostedFile httppf_decisoes = null;
                  
    
                    int nFileLen;
    
                    byte[] myData;
                    
    
                    //  procura o caminho de onde esta a aplicação
    
                    //string caminho = Server.MapPath("~/");
    
                    //***** Directório base
    
                    //testa_upLoad();
                   
                        base_path_dir = @"" + upload;
                      
    
                        //***** UpLoad file - 
                        
                        httppf_decisoes = Fudocumento.PostedFile;
                      
    
                        string strFilename_pro = base_path_dir + @"\" + Path.GetFileName(Fudocumento.PostedFile.FileName);
                      
    
                        nFileLen = httppf_decisoes.ContentLength;
                       
    
                        myData = new byte[nFileLen];
                     
    
                        httppf_decisoes.InputStream.Read(myData, 0, nFileLen);
                       
    
                        grava_upLoad(strFilename_pro, myData);
                              
                   
              
    
    
                return resul;
    
            }
    
            // faz a gravação do upload
            private bool grava_upLoad(string strPath, byte[] Buffer)
            {
               FileStream newFile;
                bool resul = true;
               // Create a file
               
                newFile = new FileStream(strPath, FileMode.Create);
                // Write data to the file
                newFile.Write(Buffer, 0, Buffer.Length);
                         
                newFile.Close();
                        
              
                return resul;
            }
    
    
    

    tens é de trabalhar com o componente asp fileupload

    Fudocumento - nome do meu file upload

    depois basta chamares upLoad(); ao clik de um botãi que cries a parte para o efeito

    cuidado com o tqmanho dos files penso que em asp so aguanta mais ou menos ate 4 mgas

    hades ter que referenciar no web config

    Código:
     <add key="tamanhofile" value="10240000" />
    
    
    
    Código:
    
    <httpRuntime
     
    
        executionTimeout="540"
    
        maxRequestLength="100480"
       
        useFullyQualifiedRedirectUrl="true" 
    
        minFreeThreads="8"
    
        minLocalRequestFreeThreads="4"
    
        appRequestQueueLimit="100"
    
        />
    
    este exemplo é para 10 mgs

    depois no c# tens de fazer um if a controlar a menos de 10 mgs

    referenciando a key tamnho

    Código:
     private string tamanho = ConfigurationManager.AppSettings.Get("tamanhofile") ;
    espero ter ajudado
     
  5. oi,

    Eu vi em cima que o erro era de directorio, mas eu estava a dizer é que deverias mostrar o erro! um copy paste do erro, um printscreen, qualquer coisa mais útil!

    Mas se estas a fazer o upload de um ficheiro, o problema poderá mesmo ser as permissões de escrita no directorio onde pretendes escrever.

    Cumps,
     
  6. ButterflyEffect

    ButterflyEffect Power Member

    The given path's format is not supported.

    [FONT=Arial, Helvetica, Geneva, SunSans-Regular, sans-serif]Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.NotSupportedException: The given path's format is not supported.

    Source Error:

    Line 56: elseLine 57: {Line 58: Upload.SaveAs(directorio + "\\" + Upload.PostedFile.FileName);Line 59: Line 60: //erro.Text = "ok! <br> ficheiro:" + FileUpload1.FileName + " <br> tamanho:" + FileUpload1.PostedFile.ContentLength + "<br> content type:" + FileUpload1.PostedFile.ContentType + "<br><br> pasta:" + Path;
    Source File: c:\Documents and Settings\IGMEstagio\My Documents\Prototipo\Gestao_estrategias.aspx.cs Line: 58

    [/FONT]
     
  7. SoundSurfer

    SoundSurfer Power Member

    Faz debug e pára na linha 58 para ver se estás a construir bem o caminho para o ficheiro.
     
  8. ButterflyEffect

    ButterflyEffect Power Member

    diz
    The given path's format is not supported.
    mais isto
    System.NotSupportedException was unhandled by user code
    Message="The given path's format is not supported."
    Source="mscorlib"
    StackTrace:
    at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath)
    at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
    at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
    at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, AccessControlActions control, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
    at System.IO.FileStream..ctor(String path, FileMode mode)
    at System.Web.HttpPostedFile.SaveAs(String filename)
    at System.Web.UI.WebControls.FileUpload.SaveAs(String filename)
    at Gestao_estrategias.Button2_Click(Object sender, EventArgs e) in c:\Documents and Settings\IGMEstagio\My Documents\Prototipo\Gestao_estrategias.aspx.cs:line 59
    at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
    at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
    at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

    na vou conseguir

    quando faxo add key da erros.onde o coloco?
     
    Última edição pelo moderador: 29 de Março de 2008
  9. duffy

    duffy Power Member

    Porque não fazes apenas assim, substituis estas duas linhas que tens:

    Upload.SaveAs(directorio + "\\" + Upload.PostedFile.FileName);
    //erro.Text = "ok! <br> ficheiro:" + FileUpload1.FileName + " <br> tamanho:" + FileUpload1.PostedFile.ContentLength + "<br> content type:" + FileUpload1.PostedFile.ContentType + "<br><br> pasta:" + Path;

    Por isto:

    txtFile - nome do input no html
    strFilename - nome do ficheiro, obtido assim "String strFileName = txtFilePT.PostedFile.FileName;"
     
  10. ButterflyEffect

    ButterflyEffect Power Member

    aparece otavex ixto

    'file:///C:\Documents and Settings\IGMEstagio\My Documents\Prototipo\images\' is not a valid virtual path.
     
  11. alfinete

    alfinete Power Member

    addkey fazes dentro do <appSettings> do webconfig

    tens de por isto no inicio do file c# onde estas a afzer upload

    using System.IO;

    txtfile , é uma caixa de texto um um input fileupload

    tem de ser input file upload
     
    Última edição: 28 de Março de 2008
  12. duffy

    duffy Power Member

    Não tinha reparado nesta parte do teu código: string directorio = Server.MapPath("files"); e se calhar induzi-te em erro.

    Tenta então assim: txtFile.PostedFile.SaveAs(Server.MapPath("files") + strFileName);

    Mas acho que isso deve ser stress na construção do caminho.
     
  13. oi,

    tenho este exemplo de fileupload muito simples, tem que funcionar, não precisas configurar ou alterar nada no web.config, certifica-te so que tens permissões no directorio onde queres escrever.

    Código:
    if (FileUpload1.HasFile)
       fuClientes.SaveAs(System.AppDomain.CurrentDomain.BaseDirectory + "images\\" + FileUpload1.FileName);
    

    Este pedaço de código tem de funcionar, de certeza absoluta!!!

    Senão funcionar é mesmo por problemas "externos" ao código!

    Cumps,
     

Partilhar esta Página