Django Python将文件上传到特定文件夹

时间:2018-05-14 03:11:20

标签: django python-3.x python-2.7 django-views

我正在开发一个Django应用程序,我希望用户能够将csv文件上传到服务器中的文件夹。感谢你能指出我正确的方向。

3 个答案:

答案 0 :(得分:1)

您可以使用django FileField,这样您就可以直接通过管理面板将文件上传到指定的文件夹,也可以使用普通用户的表单完成同样的操作。

upload = models.FileField(upload_to='uploads/your-folder/')

答案 1 :(得分:0)

客户端可以通过多部分请求发送文件。以下代码演示了使用requests

的多部分请求
import requests
url = "http://someurl"
files = {"file" : ("somename.txt", open("pathtofile", "rb"))}
requests.post(url, files=files)

这会在您的服务器中为您提供一个InMemoryFile,然后您可以使用内置于django中的default_storageContentFile将其保存到您的服务器

def filehandler(request):
    incomingfile = request.FILES['file']
    default_storage.save("pathtofolder", ContentFile(incomingfile.read()))

答案 2 :(得分:0)

这是我的完整解决方案



#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/"
&#13;
&#13;
&#13;