Python3.5 Django1.9.3 图片上传与返回
来源:互联网 发布:js 判断 arguments 编辑:程序博客网 时间:2024/05/16 08:53
Django框架对于静态文件的上传和返回有良好的支持,下面分为图片上传和下载两个部分来简单记录。
文件上传
安卓客户端上传:
点击上传按钮后会像服务器发送一个file,其中file是一个File类型的文件。
User.getInstance().upload(file,"http://192.168.1.104:8000/user/user_upload/");//测试上传图片 User.java文件中,为一个单例 使用android-async-http-1.4.8框架 public void upload(File file, String url)throws Exception{ if (file.exists() && file.length() > 0) { RequestParams params = new RequestParams(); params.put("username", "ykh"); params.put("headImg", file); httpClient.post(url, params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int i, Header[] headers, byte[] bytes) { Log.e("photo", "onSuccess"); } @Override public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { Log.e("photo", "onFailure"); } }); }else { Log.e("photo", "文件不存在"); } }
服务器端接收:
在urls中设置对应的路由,不再赘述,upload的file将被存在portrait = models.FileField(upload_to = './upload') #用户头像
(其中upload_to将指定上传后文件的保存目录,我保存在项目的主路径下的upload文件夹下)这样一个modul字段中。
服务器保存接收到的图片的代码如下:
class UserForm(forms.Form): username = forms.CharField() headImg = forms.FileField()def user_upload(request): if request.method == "POST": uf = UserForm(request.POST,request.FILES) if uf.is_valid(): username = uf.cleaned_data['username'] badge_image = uf.cleaned_data['headImg'] user = User() user.username = username user.portrait = badge_image user.save() code = 0 else: uf = UserForm() code = 1 data={'code':code} return HttpResponse(json.dumps(data))
如果不出意外的话你究可以在工程目录下的upload文件夹下看到你在安卓端上传的图片了。
图片下载(图片生成url)
在Django的项目文件夹下的setting.py中添加这样两句话:
HERE=os.path.dirname(os.path.dirname(__file__))STATIC_URL= '/static/'STATICFILES_DIRS = ( os.path.join(HERE,'D:\BitBucket\goSportServer\media').replace('\\','/'), os.path.join(HERE,'D:\桌面文件夹\photo').replace('\\','/'),)
其中的文件路径对于的就是你电脑或者服务器的物理盘符路径,假设你在D:\桌面文件夹\photo 文件夹下放了一张大图片,像我这样:
那么,你现在开启服务后直接在浏览器中输入http://192.168.1.104:8000/static/1.jpg
地址就可以看到这张图片了,具体的原理我也不细说了,大概是static被映射到你的物理路径D:\桌面文件夹\photo上,然后后面跟上你要读取的文件名就可以了。当然,你也可以在STATICFILES_DIRS中写 os.path.join(HERE,’D:\桌面文件夹’).replace(‘\’,’/’),然后在浏览器中输入http://192.168.1.104:8000/static/photo/1.jpg
来读取文件,主要的思想就是你写的static映射的目录在拼接上你在浏览器中输入的static之后的地址形成你服务器或者电脑中对应的预处理的文件的物理地址即可,是不是很简单。
给个效果图:
你可以在STATICFILES_DIRS中添加许多物理目录,来实现手工映射,比较麻烦,对静态文件处理有比较高的要求的话可以使用django的自动映射方法。
- Python3.5 Django1.9.3 图片上传与返回
- python3.5+django1.9+mySQL
- Python3.5 Django1.9.2常用命令
- python3.5+django1.9+mySQL
- Django1.8+Python3.4+Mysql5.5
- Python3.4+Nginx+Django1.8+Mysql5.5项目开发与部署
- Django1.4上传图片无法在页面显示的问题
- Django1.9 加载通过ImageField上传的图片
- Django1.10 上传图片?TEMPLATES、STATICFILES_DIRS、THUMBNAIL_PROCESSORS等相关配置
- OpenShift Python Django 部署(Python3.3 + Django1.5)
- Python3.5+Django1.8链接Mysql数据库的方法
- Python3.5 Django1.8 apache2.4 Ubuntu 配置mod_wsgi模块
- Python3.5 Django1.10 Scrapy1.2 Ubuntu16.04 HTML5
- Django1.10+Apache2.4+mod_wsgi+python3.5部署
- django1.10(python3.5) 新特性学习
- python3.5 django1.10 demo 遇见的问题
- Python3.5配置django1.10连接MySQL5.7
- Django1.11.1+python3.5+Pycharm 快速搭建博客blog
- ios中navigation controller的漂移问题
- JVM学习笔记9—JIT及其相关参数
- Hello World——CSDN Blog
- linux编译器琐碎杂记
- codevs 1257
- Python3.5 Django1.9.3 图片上传与返回
- 存储过程详解
- oracle之续day06—demo
- 自定义垂直滚动切换TextView
- Context类浅析
- 简单银行管理系统
- 求数组n中出现次数超过一半的数
- 【学习笔记】day2数据存储和界面展现第一天 01_相对布局
- 折半查找