Faça o upload de um arquivo para um diretório fora do Rails Root com o acessório_fu

StackOverflow https://stackoverflow.com/questions/1387577

  •  21-09-2019
  •  | 
  •  

Pergunta

Estou tentando usar o apetlement_fu para fazer upload de arquivos para um diretório fora do RAILS_ROOT. Eu quero que os arquivos sejam salvos para ~/APP_NAME/uploads/ para que eles possam ser aprovados/rejeitados antes de se tornarem publicamente disponíveis. Eu tentei a seguinte configuração para has_attachment:

has_attachment  :storage => :file_system,
                :path_prefix => "~/APP_NAME/uploads/",
                :max_size => 5.megabytes

Infelizmente, essa configuração simplesmente cria o ~/APP_NAME/uploads/ Estrutura do diretório em RAILS_ROOT. Qualquer maneira de salvar o arquivo fora de RAILS_ROOT?

Foi útil?

Solução 2

Encontrei um método alternativo que me combina melhor do que usar nomes de caminho relativos. Eu adicionei um método chamado full_filename para minha aula de apego:

class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end

Outras dicas

Provavelmente, esse não é um problema de anexo-FU, mas como o Ruby lida com a E/S do arquivo, bem como como os arquivos são armazenados no Unix.

Por exemplo, se o seu aplicativo vive, digamos, ~/Usuários/RON/APP_NAME

Se você alterar o código acima:

:path_prefix => "~/APP_NAME/uploads/"

Para:

:path_prefix => "../#{RAILS_ROOT}/uploads"

Os arquivos seriam armazenados em uma pasta chamada "uploads" em ~/usuários/ron/uploads. O ".. ../" significa um diretório acima da raiz dos trilhos atuais. Se você quiser subir dois diretórios, seria "../../" e assim por diante.

Mas isso apenas aborda a navegação hierárquica. Se você quiser dizer ao anexo-FU para armazenar arquivos em um diretório codificado no seu sistema de arquivos, você pode dar um caminho de arquivo como "~/usuários/ron/app_name/uploads", mas lembre O Way é quebradiço e pode ser um ponto de dor no futuro, caso o seu armazenamento de arquivos mude.

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top