upload de arquivos em pastas definidas pelo sistema

64 views
Skip to first unread message

Fabiano Almeida

unread,
May 19, 2017, 7:28:04 AM5/19/17
to web2py-us...@googlegroups.com
Bom dia,

Há como definir pastas separadas para grupos de arquivos? 

Preciso de que os arquivos sejam armazenados em pastas nomeadas por identificador de grupo definido pelo usuário (por exemplo data, categoria ou outro nome), pois estes arquivos posteriormente também serão enviados para backup externo.

Grato,

Fabiano de Almeida.

felipe...@tksolucoes.com.br

unread,
May 24, 2017, 8:35:19 AM5/24/17
to web2py-users-brazil
Se eu entendi, ao fazer upload você quer salvar em uma pasta especifica criada por você não é ? cara eu tive esse problema, ainda não implementei 100% porque tive que ir para outra parte do projeto, porém vou deixar uma esboço aqui para você.

JS
$(document).ready(function (){
$("#btn-user").on("click", function (){
blob = $("#image_file")[0].files[0];
uploadFile($("#insertuser")[0], blob,'teste');
   });
});
function uploadFile(form,blobFile, fileName){
   var fd = new FormData();
   fd.append("fileToUpload", blobFile);
   
   $.ajax({
      url: "{{=URL(f='newuser.json')}}",
      type: "POST",
      data: fd,
      processData: false,
      contentType: false,
      success: function(response) {
          alert("sucesso");
          atualizaGrid(); 
      },
      error: function(jqXHR, textStatus, errorMessage) {
          alert(errorMessage);
      }
   });
}
Controller

Def newuser:
#parametros de entrada da grid
  filename = request.vars.fileToUpload.filename 
  file = request.vars.fileToUpload.file
  
  form = request.post_vars['form']
  
  #Cria nova pasta
  dir = './applications/empresa/uploads/teste' 
  os.mkdir(dir)
  
  #caminho do upload
  dirupload = 'uploads/teste'
  
  #Manipulando imagem para adicionar a nova pasta
  shutil.copyfileobj(file, open(os.path.join(request.folder, dirupload , filename),'wb'))
 
Espero que ajude!

Fabiano Almeida

unread,
May 24, 2017, 12:14:26 PM5/24/17
to web2py-us...@googlegroups.com
Boa tarde Felipe,

Grato pelo caminho, assim que eu consiga implementar funcionando, compartilho aqui no grupo.

Cordialmente,

Fabiano.

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Leandro Paz

unread,
Aug 15, 2017, 7:28:33 PM8/15/17
to web2py-users-brazil
Boa noite pessoal, peguei uma dica no grupo "web2py-users" https://groups.google.com/forum/#!topic/web2py/8X-QlbtyxEQ

Deu certo o upload do arquivo, mas o download não vai! No link acima também é construída uma função de download especial mas não entendi como ajusta-lá.

Segue como tentei:

no models da tabela que tem o campo de upload coloquei:
dbtrabalho.primeiro_envio.custom_store = lambda file, filename, path: store_file(file, filename, path,'teste')
dbtrabalho.primeiro_envio.custom_retrieve = lambda filename, path: retrieve_file(filename, path)

##############################
def store_file(file, filename=None, path=None, new_filename=None):
    import os
    import shutil
    path=os.path.join(request.folder, 'uploads',new_filename)
    if not os.path.exists(path):
        os.makedirs(path)
    pathfilename = os.path.join(path, filename)
    dest_file = open(pathfilename, 'wb')
    try:
        shutil.copyfileobj(file, dest_file)
    finally:
        dest_file.close()

    return filename

################################
def retrieve_file(filename, path=None):
    import os
    path=os.path.join(request.folder, 'uploads','teste')
    return (filename, open(os.path.join(path, filename), 'rb'))



Reply all
Reply to author
Forward
0 new messages