HTML - (Input type=file)

Kainite

Membro
Boas!
Estou a desenvolver uma pagina em ASP, mas cheguei a um ponto que só consigo utilizar a opção (input type=path) ou (input type=text) para que ele me escreva na base de dados em SQL server o caminho todo. ex: ../pasta/pagina.asp

Quando uso a opção (input type=file) para que possa usar o "Browse" ao fazer Submit ele só me copia o nome do ficheiro. ex: pagina.asp

Eu sei que o problema se encontra na "\" mas já fiz de tudo para ele me guarde o caminho todo em vez só do ficheiro, mas não consigo, usei tambem uma opção no value. ex:(value="+path+<&pagina&>" mas nada.... continua a guardar só a pagina. Alguem me ajuda nesta Matéria?
 
Quando uso a opção (input type=file) para que possa usar o "Browse" ao fazer Submit ele só me copia o nome do ficheiro. ex: pagina.asp
Mas é isso mesmo que deve fazer (http://www.w3.org/TR/html401/interact/forms.html#file-select).

Penso que até há versão 6 (ou 5?) do IE, esse browser passava (erradamente) a path completa do ficheiro seleccionado. Tanto quanto sei, isso já está resolvido.

Concluindo, o que tu queres fazer através do 'file select' só resulta em browsers que tenham esse bug.
 
codigo c#

metodos para fazer o upload para uma pasta referente ao input file

Código:
 private bool upLoad()
        {

            bool resul = true;

           
                //***** temporariamente inibido
                      
                string base_path_dir;
                //string  base_path_dir2;
                //*****

                HttpPostedFile httppf_decisoes = null;
                // HttpPostedFile httppf_decisoes2;

                int nFileLen;

                //, nFileLen2

                byte[] myData;
                //,myData2

                //  procura o caminho de onde esta a aplicação

                //string caminho = Server.MapPath("~/");

                //***** Directório base

                //testa_upLoad();
               
                    base_path_dir = @"" + upload;
                    //base_path_dir2 = @"" + upload2;

                    //***** UpLoad file - 
                    
                    httppf_decisoes = Fudocumento.PostedFile;
                    //httppf_decisoes2 = Fudocumento.PostedFile;

                    string strFilename_pro = base_path_dir + @"\" + Path.GetFileName(Fudocumento.PostedFile.FileName);
                    //string strFilename_pro2 = base_path_dir2 + @"\" + Path.GetFileName(Fudocumento.PostedFile.FileName);

                    nFileLen = httppf_decisoes.ContentLength;
                    //nFileLen2 = httppf_decisoes2.ContentLength;

                    myData = new byte[nFileLen];
                    //myData2 = new byte[nFileLen2];

                    httppf_decisoes.InputStream.Read(myData, 0, nFileLen);
                    //httppf_decisoes2.InputStream.Read(myData2, 0, nFileLen2);

                    grava_upLoad(strFilename_pro, myData);
                    //grava_upLoad(strFilename_pro2, myData2);
                    //resul = true;

               
               
          


            return resul;

        }

        // faz a gravação do upload
        private bool grava_upLoad(string strPath, byte[] Buffer)
        {


para gravares o caminho na bd fazes fudocumento id ou nome do input=file

Código:
Fudocumento.FileName


o meu esta feito para validar apenas pdfs no upload

Código:
private string validapdf(string str)
        {
            string palavra;
            palavra = str.Substring(str.Length - 4);
            return palavra;
        }

validação do input=file

Código:
 private bool VFudocumento(string fileup)
        {
            bool resul = false;
            // Valida se caixa de texto esta vazia
            if (fileup == "")
            {
                Lbldoc.Text = "Campo Obrigatório ";
                this.lblteste.Text = "";
                resul = false;
            }

            // Valida se caixa de texto não esta vazia
            if (fileup != "")
            {
                // Valida se o documento puxado é pdf 
                if (validapdf(fileup) == ".pdf")
                {
                    this.Lbldoc.Text = "";
                    this.lblteste.Text = "";
                    resul = true;
                }

                // Valida se o documento puxado não é pdf 
                if (validapdf(fileup) != ".pdf")
                {
                    this.Lbldoc.Text = " Só Documentos pdf";
                    this.lblteste.Text = "";
                    resul = false;
                }

            }

            return resul;
        }


linha no c# para chamares o caminho do file que esta nop web config e o tamanho do file
Código:
  private string upload = ConfigurationManager.AppSettings.Get("upload");
 private string tamanho = ConfigurationManager.AppSettings.Get("tamanhofile") ;

Código:
depois para controlares o tamanho do file em c# fazes

 if (this.Fudocumento.PostedFile.ContentLength <= Convert.ToInt32 ( tamanho) )
                            {}

__________________________________________
web config
_____________________________________
web config
_________

linhas no web config uma para dar o caminho para onde fazes o uoload
outras para limitar o tamanho maximo do file postas dentro do appsettings

Código:
<add key="upload" value="\Documents and Settings\jaribeiro\Ambiente de trabalho\acordaos\decisoes\PDF"/>

    <add key="tamanhofile" value="10240000" />




limitação do brwser em tamanho de file para upload

posta por baixo do <system.web> no web config

Código:
   <httpRuntime
 

    executionTimeout="540"

    maxRequestLength="100480"
   
    useFullyQualifiedRedirectUrl="true" 

    minFreeThreads="8"

    minLocalRequestFreeThreads="4"

    appRequestQueueLimit="100"

    />
 
Back
Topo