Skip to content

Commit 4bfa0ea

Browse files
committed
Merge pull request #253 from rg3915/pelican
Fix typo [skip ci]
2 parents 98775cf + f3b2ae1 commit 4bfa0ea

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

content/upload-de-arquivos-no-django-entendo-os-modos-de-leitura.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ Site: http://cuducos.me
1111
Twitter: cuducos
1212
Linkedin: cuducos
1313

14-
# Upload de arquivos no Django: entendo os modos de leitura
15-
16-
Em uma conversa com a galera do [Welcome to the Django](http://welcometothedjango.com.br) acabei experimentando e aprendendo – na prática — sobre _csv_, _strings_, _bytes_, _file object_ e a maneira como uploads funcionam. Resgistrei minha exploração e espero que mais gente possa encontrar uma ou outra coisa nova aqui!
14+
Em uma conversa com a galera do [Welcome to the Django](http://welcometothedjango.com.br) acabei experimentando e aprendendo – na prática — sobre _csv_, _strings_, _bytes_, _file object_ e a maneira como uploads funcionam. Registrei minha exploração e espero que mais gente possa encontrar uma ou outra coisa nova aqui!
1715

1816
## O problema
1917

@@ -43,12 +41,12 @@ Para explorar isso, eu precisava simular o ambiente da minha _view_. Comecei cri
4341
```
4442
Linha 1, foo
4543
Linha 2, bar
46-
Linha 3, acentação
44+
Linha 3, acentuação
4745
```
4846

4947
Depois fui ler a [documentação do `HttpRequest.FILES`](https://docs.djangoproject.com/en/1.9/ref/request-response/#django.http.HttpRequest.FILES) e descobri que os arquivos ali disponíveis são instâncias de [`UploadedFile`](https://docs.djangoproject.com/en/1.9/ref/files/uploads/#django.core.files.uploadedfile.UploadedFile).
5048

51-
Logo, se eu criar uma instância da classe `UploadedFile`, posso acessar um objeto do mesmo tipo que eu acessava na _view_ pelo `resques.FILES['file.csv']`. Para criar essa instância, preciso de um arquivo aberto, algo como `open(file_path, modo)`. Para continuar a simulação, eu precisava saber de que forma o Django abre o arquivo do upload quando instancia ele no `HttpRequest.FILES`.
49+
Logo, se eu criar uma instância da classe `UploadedFile`, posso acessar um objeto do mesmo tipo que eu acessava na _view_ pelo `request.FILES['file.csv']`. Para criar essa instância, preciso de um arquivo aberto, algo como `open(file_path, modo)`. Para continuar a simulação, eu precisava saber de que forma o Django abre o arquivo do upload quando instancia ele no `HttpRequest.FILES`.
5250

5351
Eu desconfiava que não era em texto (`r`), que era em binário (`rb`). A documentação do [curl](https://curl.haxx.se/docs/manpage.html#-F), por exemplo, indicava que os arquivos eram enviados como binários. A documentação da [Requests](http://docs.python-requests.org/en/master/user/advanced/#streaming-uploads) tem um aviso grande, em vermelho, desencorajando qualquer um usar outro modo que não o binário.
5452

@@ -95,7 +93,7 @@ for line in csv.reader(uploaded.file):
9593

9694
['Linha 1', ' foo']
9795
['Linha 2', ' bar']
98-
['Linha 3', ' acentação']
96+
['Linha 3', ' acentuação']
9997

10098

10199
Enfim, esse métodos `UploadedFile.close()` e `UploadedFile.open(mode=mode)` podem ser muito úteis quando queremos fazer algo diferente de gravar os arquivos recebidos em disco.

0 commit comments

Comments
 (0)