O File do Django tem os seguintes atributos e métodos:
O nome do arquivo incluindo o caminho relativo de MEDIA_ROOT.
O caminho absoluto do arquivo no sistema de arquivos
Sistemas de armazenamento de arquivos personalizados podem não gravar arquivos localmente; arquivos gravados nesses sistemas terão o path com valor None.
A URL onde o arquivo pode ser obtido. Isso é frequentemente útil em templates; por exemplo, um snippet de um template para exibir um Car (veja abaixo) poderia ser assim:
<img src='{{ car.photo.url }}' alt='{{ car.name }}' />
O tamanho do arquivo em bytes.
Abre ou reabre o arquivo (que por definição também faz um File.seek(0)). O argumento mode segue os mesmos valores do open() padrão do Python.
Ao reabrir um arquivo, o mode irá sobrescrever o modo com quem o arquivo foi originalmente aberto; None significa reabrir no modo original.
Lê o conteúdo do arquivo. O argumento opcional size é o número de bytes a serem lidos; se não for especificado, o arquivo será lido por completo.
Itera sobre o arquivo retornando uma linha por vez.
Itera sobre o arquivo retornando "pedaços" de um dado tamanho. O padrão para chunk_size é 64 KB.
Isto é especialmente útil com arquivos muito grandes, desde que os permitem serem enviados por stream para o disco, evitando o armazenamento de todo o arquivo na memória.
Retorna True se o arquivo é grande o suficiente para exigir múltiplos pedaços ou se todo o seu conteúdo pode ser acessado no chunk_size fornecido.
Escreve a string especificada no conteúdo do arquivo. Dependendo do sistema de armazenamento nos bastidores, esse conteúdo pode não estar completamente escrito até close() ser chamado no arquivo.
Fecha o arquivo.
Qualquer File que esteja associado com um objeto (como o Car.photo, no exemplo acima) irá ter algums métodos extras:
Salva um novo arquivo com o nome de arquivo e conteúdo fornecidos. Não irá substituir o arquivo original, mas criar um novo arquivo e atualizar o objeto para apontar pra ele. Se save é True, o método save() do modelo irá ser chamado assim que o arquivo é salvo. Assim, essas duas linhas:
>>> car.photo.save('myphoto.jpg', contents, save=False)
>>> car.save()
são o mesmo que essa única linha:
>>> car.photo.save('myphoto.jpg', contents, save=True)
Note que o argumento content deve ser uma instância da classe File ou uma subclasse de File.
Remove o arquivo da instância do modelo e deleta o arquivo em si. O argumento save funciona como acima.
Dec 26, 2011