Django Python загружает файл в определенную папку - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над приложением Django и хочу, чтобы пользователи могли загружать файл csv в папку на сервере.Ценю, если вы могли бы указать мне правильное направление.

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Клиенты могут отправлять файлы по нескольким запросам. Следующий код демонстрирует запросы нескольких деталей, используя requests

import requests
url = "http://someurl"
files = {"file" : ("somename.txt", open("pathtofile", "rb"))}
requests.post(url, files=files)

Это даст вам InMemoryFile на вашем сервере, который вы затем сможете сохранить на своем сервере, используя default_storage и ContentFile, встроенные в django

def filehandler(request):
    incomingfile = request.FILES['file']
    default_storage.save("pathtofolder", ContentFile(incomingfile.read()))
0 голосов
/ 15 мая 2018

Вот мое полное решение

#view.py
def uploadfunc(request):
	if request.method=='POST':
		form =uploadfileform(request.POST,request.FILES)
		if form.is_valid():
			form.save()
			return render_to_response('upload_successful.html')
	else:
		form=uploadfileform()
	return render(request, 'upload.html',{'form':form})


#models.py
class uploadfolder(models.Model):
    """ my application """
    File_to_upload = models.FileField(upload_to='')


#forms.py
#uploading file form
class uploadfileform(forms.ModelForm):
	class Meta:
		model=uploadfolder
		fields=('File_to_upload',)


#upload.html
  <form method="post" action="{% url 'uploadfunc'%}" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_table }}
  <!--  <button type="submit">Upload</button>-->
    <input class="btn btn-primary btn-md" role="button" type="submit" name="submit" value="Upload File" >
  </form>


#settings.py 

MEDIA_ROOT = "/var/www/vmachines/registry/files/"
MEDIA_URL = "files/"
0 голосов
/ 14 мая 2018

Вы можете просто использовать django FileField, и это позволяет загружать файл в указанную папку непосредственно через административную панель, и то же самое можно сделать, используя форму для обычного пользователя.

upload = models.FileField(upload_to='uploads/your-folder/')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...