首先申明该文使用的django
版本为svn
版本,我每天都在更新
,python
是2.5,pil
也是最新的版本。
通常情况下用django上传图片我们会定义一个django.forms.Form的子类,比如:
# coding: utf-8
import django.forms as forms
class PictureForm(forms.Form):
# ......
# 图片
imagefile = forms.ImageField()
# ......
然后我们在服务端会定义一个函数来处理图片上传,我们先来看看一般的做法:
# coding: utf-8
from django.http import HttpResponse
def addPicture(request):
if request.method == 'POST':
form = PictureForm(request.POST, request.FILES)
if form.is_valid():
f = request.FILES["imagefile"]
# des_origin_path 为你在服务器上保存原始图片的文件物理路径
des_origin_f = open(des_origin_path, "ab")
for chunk in f.chunks():
des_origin_f.write(chunk)
des_origin_f.close()
# 图片文件被保存在硬盘上后,你可以用pil的Image.open打开进行处理,比如改变大小,加水印等等
在上面这种传统的做法中,是把图片文件保存到硬盘上后,再由pil图形库从硬盘上加载,再进行图片处理,明显多了很多的硬盘IO操作,如果你是一个图片处理量很大的应用,显然不想看到这样的局面。那我们来看看另外一个做法:
# coding: utf-8
from django.http import HttpResponse
import ImageFile
def addPicture(request):
if request.method == 'POST':
form = PictureForm(request.POST, request.FILES)
if form.is_valid():
f = request.FILES["imagefile"]
parser = ImageFile.Parser()
for chunk in f.chunks():
parser.feed(chunk)
img = parser.close()
# 在img被保存之前,可以进行图片的各种操作,在各种操作完成后,在进行一次写操作
img.save("yoursavepath")
在上面的做法中,我们利用pil的ImageFile直接从django接收的数据流中构建出图形对象,进行处理后,在保存,减少了硬盘的读操作。现在网上有些例子使用StringIO对象来作为pil Image.open的输入,经过我多次尝试,在ubuntu以及winxp、centos上都要报异常,我想可能跟pil的版本有关,或许以前的低版本pil的确可以处理。
分享到:
相关推荐
在本例中,需要安装Pillow库,它是一个图像处理库,可以帮助Django处理图像文件。可以通过pip安装: ```bash pip install Pillow ``` 在应用的视图层(views.py)中,需要编写视图函数以处理图片的上传逻辑。例如...
在本文中,我们将深入探讨如何在Django框架中结合Layui实现图片上传功能。Layui是一款优秀的前端UI框架,而Django是Python后端开发的流行框架,两者结合可以构建出美观且功能强大的Web应用。以下是实现这一功能的...
Python Django 是一个强大的Web开发框架,它为开发者提供了一种高效、优雅的方式来构建Web应用程序。在本项目"python django1.0.2批量上传"中,重点在于实现文件的批量上传功能,尤其支持中文文件名,这对于处理中文...
在本教程中,您可以学习 迭代请求文件 和 上传多个文件 一次使用 Django 在 Python 中。本教程旨在为学生和初学者提供学习开发动态网站的参考 姜戈.在这里,我将提供一些步骤来创建一个简单的 Web 应用程序,该应用...
在本文中,我们将深入探讨如何使用Django框架实现文件上传并将其在网页上显示的简单例子。Django是一个流行的Python Web开发框架,以其强大的功能和高效性而受到开发者喜爱。文件上传是Web应用中常见的需求,例如...
本示例将讲解如何使用ModelForm来实现多文件上传的功能,这对于处理用户上传的多个文件非常有用,比如在上传图片、文档等场景下。 首先,我们需要创建一个Django模型(Model),包含一个或多个FileField或...
通过Django的Form方式上传文件,简单,但无法局部刷新实现ajax效果; 通过js或jQuery方式,需要使用FormData对象,仍有些浏览器不兼容; 通过Form+iframe方式上传文件,兼容性最好。 里面含有全部源代码。
在Python的Web开发框架Django中,返回JSON数据和处理图片是...这个简单的示例只是Django处理JSON和图片能力的一个起点,展示了如何构建一个基本的Web服务。随着学习的深入,你可以构建更复杂、功能更丰富的应用程序。
本文实例讲述了Django框架文件上传与自定义图片上传路径、上传文件名操作。分享给大家供大家参考,具体如下: 文件上传 1、创建上传文件夹 在static文件夹下创建uploads用于存储接收上传的文件 在settings中配置, ...
在Django框架中,表单(Form)是处理用户数据的核心工具,特别是在处理文件上传时。本教程将深入探讨如何使用Django Forms来实现文件上传功能。 首先,我们需要了解Django Form的基本结构。在Django中,创建一个...
在Django中实现图片上传、分页和三级联动效果,主要涉及到以下几个关键点: 1. **上传图片配置**: - 首先,需要在项目目录下创建一个用于存储上传图片的目录,例如`static/media/booktest`。 - 接着,在`...
2. **表单处理**:创建一个Django表单,包含这些字段,以便在视图中处理用户上传的文件。使用`ModelForm`可以简化这个过程: ```python from django import forms from .models import MyModel class MyForm...
Django是最有代表性的一种。许多成功的网站和APP都基于Django。 Django是一个开源的Web应用框架,由Python写成。 Django Web框架还提供高级功能,例如ORM,数据库迁移,用户身份验证,管理面板和表单。 Django程序员...
django中文文档的介绍,django 官方文档说明 django 官方文档说明 django 官方文档说明
在 Django 框架中,上传文件是一项常见的需求,它涉及到用户通过网页上传图片、文档等各类文件。在这个实例中,我们将深入探讨如何在 Django 1.5 版本中实现一个简单的文件上传功能,特别是图片上传。 首先,我们...
在开发微信小程序的过程中,将图片上传到云服务器是常见的需求之一。这个场景通常涉及到前端与后端的交互...虽然代码可能比较杂乱,但通过学习和理解,可以提升对Django处理文件上传的理解,为后续的开发工作提供借鉴。
在Python的Web开发框架Django中,文件上传和下载是常见的功能需求,尤其在处理用户数据、资源分享或系统备份等方面。本项目基于Django 2.0和Python 3.7,实现了对包括中文名文件在内的文件上传与下载功能。下面将...
2. **模型(Models)**:Django的核心之一就是ORM(对象关系映射),它允许开发者用Python类来定义数据库表结构。在模型文件中,我们可以定义字段、属性以及字段间的关系,如外键、一对多和多对多等。 3. **视图...
综上所述,在Django中实现图片上传的格式校验和大小限制,需要涉及对文件后缀的检查、使用Pillow库打开图片进行格式确认、设置上传文件大小限制、异常处理等多个方面的知识。掌握这些知识点,可以有效地保证网站安全...
2. 模型层(Model Layer):这部分介绍了Django模型层的架构、字段类型、元选项、模型类查询集、执行查询、查询集方法、查找表达式、实例方法和关联对象的访问。还包括了迁移的概念和步骤。 3. 视图层(View Layer...