Lahiruzz
Lahiruzz

Reputation: 665

Django: Image Upload to the Server

I want to upload the image to the server. for that I have created a form and within my views.py file I tried to submit it into the sever. Here it does not uploads the file to "images" folder. instead of that it only update the database filed with new image name. So can anyone give me a solution.

this is views.py file

@login_required
def edit_profile(request):

if request.POST:


        employee = Employee.objects.get(user=request.user)          
        employee.avatar=request.POST.get('image')
        employee.save()
        return HttpResponseRedirect('/view_profile/')       

user_profile = request.user.get_profile()
return render_to_response('edit_profile.html',{'profile':user_profile },context_instance=RequestContext(request))

here my html code

   {% block content %}

<form action="." method="post">
{% csrf_token %}    

    <input type="file" name="image"/>
    <input type="submit" value="Save Changes" name="save" />        

</form>

{% endblock %}

what should i change to upload image to the "images" folder

Upvotes: 0

Views: 2731

Answers (1)

Rohan
Rohan

Reputation: 53386

You need to add enctype="multipart/form-data" in your form element, so that files are also uploaded and available in request.FILES in the view..

So update it to

<form action="." method="post" enctype="multipart/form-data" >

 ....

More info at Binding uploaded files to a form

To save the image its easier to use ModelForm and set image file appropriately. But still you want to save the object directly do

...
employee.avatar = request.FILES['image']
employee.save()

Ref File Uploads

Upvotes: 4

Related Questions