none
salvar arquivo anexo em uma pasta do sistema no c# RRS feed

  • Pergunta

  • Amigos, 

    tenho o seguinte cenário, em minha aplicação preciso fazer com que o usuário busque em seu pc uma imagem qualquer, até aí blz, estou usando OpenFileDialog.

    Porém quando vou salvar a imagem, a informação que salvo no banco é só o caminho de onde encontra-se essa imagem.

    quero saber se tem como eu pegar essa imagem, copiar ela e colar em uma pasta especifica da minha aplicação, ou seja, sempre que for anexada uma imagem ela vai ser armazenada na pasta do sistema e não no benco.

    Não sei se é o certo, mas eu acho que seria um ctrl + c no diretório do pc e um ctrl +v na pasta do meu sistema, porém, não estou conseguindo fazer isso.

    Alguém pode me ajudar ?

    segunda-feira, 25 de março de 2013 19:39

Respostas

  • Olá, não me atentei que era uma aplicação windows.

    Vc pode fazer assim no click do FileOpenDialog:

    Só um detalhe, se a aplicação está instalada na máquina do cliente e você quer jogar em uma pasta no servidor, terá que passar um caminho de rede. Geralmente como "\\Servidor\PastaCompartilhada\". Se a aplicação está instalada na máquina do cliente, você pode utilizar Environment.CurrentDirectory para saber a pasta que a sua aplicação está instalada. É o equivalente ao Server.MapPath("~"); para web.

    string origem = OpenFileDialog1.FileName;
    string destino = string.Concat("Caminho do server",System.IO.Path.GetFileName(origem));

    System.IO.File.Copy(origem,destino);


    Thiago Jacometti Microsoft Developer @TMJSistemas | Skype:tmattarwebco | Email:thiago@tmjsistemas.com.br | MSN: tm.jacometti@hotmail.com

    terça-feira, 26 de março de 2013 16:41

Todas as Respostas

  • Olá,

    Aqui tem um exemplo do que você quer fazer.

    segunda-feira, 25 de março de 2013 20:00
  • Olá,

    Aqui tem um exemplo do que você quer fazer.

    amigo, me desculpe, mas não entendi muito bem . . . 
    segunda-feira, 25 de março de 2013 22:12
  • Cara,

    Porque ao invés de salvar o caminho no banco ou a imagem em outro diretório, você não salva a própria imagem no banco?

    Segue exemplo em uma outra thread que eu respondi sobre como inserir arquivos no banco:

    http://social.msdn.microsoft.com/Forums/pt-BR/vsgeralpt/thread/7d82299f-812c-4810-863a-04665e463b31

    Mas para não deixar de responder a sua pergunta sobre como copiar arquivo, você vai precisar trabalhar com System.IO

    Você tem duas opções, mover ou copiar o arquivo:

    File.Move
    File.Copy



    Atenciosamente, Samuel dos Anjos

    segunda-feira, 25 de março de 2013 22:34
  • Olá, espero que isso aqui ajude:

    string arquivo = System.IO.Path.GetFileName(txtArquivo.PostedFile.FileName);
    string pathDestino = Server.MapPath("~") + @"\Content\ImportacaoConta\";
    
    
    txtArquivo.PostedFile.SaveAs(string.Concat(pathDestino, arquivo));


    Thiago Jacometti Microsoft Developer @TMJSistemas | Skype:tmattarwebco | Email:thiago@tmjsistemas.com.br | MSN: tm.jacometti@hotmail.com

    terça-feira, 26 de março de 2013 15:04
  • Olá, espero que isso aqui ajude:

    string arquivo = System.IO.Path.GetFileName(txtArquivo.PostedFile.FileName);
    string pathDestino = Server.MapPath("~") + @"\Content\ImportacaoConta\";
    
    
    txtArquivo.PostedFile.SaveAs(string.Concat(pathDestino, arquivo));


    Thiago Jacometti Microsoft Developer @TMJSistemas | Skype:tmattarwebco | Email:thiago@tmjsistemas.com.br | MSN: tm.jacometti@hotmail.com

    Minha aplicação e widows form quando ao uso do objeto "Server" não seria somente para Web ?
    fiz no codigo como vc explicou, a mensagem foi: "Parte do caminho não encontrado".
    terça-feira, 26 de março de 2013 16:14
  • Olá, não me atentei que era uma aplicação windows.

    Vc pode fazer assim no click do FileOpenDialog:

    Só um detalhe, se a aplicação está instalada na máquina do cliente e você quer jogar em uma pasta no servidor, terá que passar um caminho de rede. Geralmente como "\\Servidor\PastaCompartilhada\". Se a aplicação está instalada na máquina do cliente, você pode utilizar Environment.CurrentDirectory para saber a pasta que a sua aplicação está instalada. É o equivalente ao Server.MapPath("~"); para web.

    string origem = OpenFileDialog1.FileName;
    string destino = string.Concat("Caminho do server",System.IO.Path.GetFileName(origem));

    System.IO.File.Copy(origem,destino);


    Thiago Jacometti Microsoft Developer @TMJSistemas | Skype:tmattarwebco | Email:thiago@tmjsistemas.com.br | MSN: tm.jacometti@hotmail.com

    terça-feira, 26 de março de 2013 16:41