python 图片上传写入磁盘功能
本文是采取django框架,前端上传图片后端接收后写入磁盘,数据库记录图片在磁盘上的路径(相对),以下是前端上传到后端入库的基本流程
一. html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <form action="" method="post" enctype="multipart/form-data">
<p><input type="file" name="image"></p>
<button type="submit" value="提交">提交</button>
</form> </body>
</html>
# 必须要加上 enctype="multipart/form-data" 将文件以二进制的形式上传,这样可以实现多种类型的文件上传
二、后端接收代码
from myweb.FileinfoPlug import file_info
def news_add(request):
if request.method == "GET":
return render(request, 'image-add.html')
else:
input_image = request.FILES.get('image')
image_name = file_info(input_image, 'article')
print(image_name)
models.Image.objects.create(title_img=image_name)
return redirect('/images/')
三、file_info功能代码
#!/bin/env python
# -*- coding: utf-8 -*-
import os
import time, random
from django.conf import settings def file_Path(upload_to):
file_path = os.path.join(settings.BASE_DIR, 'media', upload_to)
if not os.path.exists(file_path):
os.makedirs(file_path)
return file_path def file_info(input_image,dirname=None):
""" :param input_image: 前端传过来的二进制数据
:param dirname: 指定图片上传的目录,比如这里传入的是article,那么格式是 /media/article/images/2018/06/30/20180630133015_94.jpg
:return: 最终如果想展示图片只需在orm取出数据库后加入 http://image.com/+/media/article/images/2018/06/30/20180630133015_94.jpg 拼接一下即可
"""
fn = time.strftime('%Y%m%d%H%M%S')
fn = fn + '_%d' % random.randint(0, 100)
upload_to = time.strftime('images/%Y/%m/%d/')
if dirname != None:
upload_to = time.strftime(dirname+'/images/%Y/%m/%d/')
file_suffix = input_image.name.split('.')[1]
image_name = '{0}{1}.{2}'.format(upload_to, fn, file_suffix)
filename = '{0}{1}{2}.{3}'.format(file_Path(upload_to), os.sep, fn, file_suffix)
with open(filename, 'wb') as f:
f.write(input_image.read())
return image_name
四、最后settings.py配置媒体目录
MEDIA_URL = '/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media/')
五、附上数据库的配置(自己好忘怎么配)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbdatabase',
'USER': 'dbusername',
'PASSWORD': 'dbpassword',
'HOST': '192.168.xx.xx',
'PORT': '',
'charset':'utf8'
}
}
python 图片上传写入磁盘功能的更多相关文章
- JavaScript实现本地图片上传预览功能(兼容IE、chrome、FF)
需要解决的问题有:本地图片如何在上传前预览.编辑:最近发现这个功能很多是基于flash实现的,很多JavaScript实现的代码兼容性都很差,特别是在IE和firefox和chrome三个浏览器上不兼 ...
- 微信JS图片上传与下载功能--微信JS系列文章(三)
概述 在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考. 图片上传 $(function(){ v ...
- js实现图片上传预览功能,使用base64编码来实现
实现图片上传的方法有很多,这里我们介绍比较简单的一种,使用base64对图片信息进行编码,然后直接将图片的base64信息存到数据库. 但是对于系统中需要上传的图片较多时并不建议采用这种方式,我们一般 ...
- UEditor1.4.3.3实现图片上传、删除功能
1.下载ueditor1.4.3.3 UTF-8的版本 2.新建一个项目,在项目中添加UEditor,把下载好的插件都放在ueditor这个文件夹中,在进行一些基本的配置 3.在根目录下新建一个为in ...
- JQ实现图片上传预览功能
<input type="file" name="img" id="test1"> <img src="&quo ...
- 使用ajax,结合jquery,php实现图片上传预览功能
大致逻辑:点击页面的file,上传图片到指定的php处理图片的文件,处理完成以后,将图片的连接地址返回,JS控制返回的数据,然后将图片动态的展示出来html代码<label> <im ...
- HTML+Jquery实现多图片上传预览功能
HTML:使用input的onchange事件,它一改变就触发事件 <p id="p3"> <input name="File" onchan ...
- js实现图片上传预览功能,使用base64编码来实现
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...
随机推荐
- lower_bound/upper_bound example
http://www.cplusplus.com/reference/algorithm/upper_bound/左闭右开 Return iterator to lower bound Returns ...
- VS生成事件执行XCOPY时出现Invalid num of parameters的解决方案
最近想偷懒 想把项目生成的dll全部自动汇集到一个文件夹下 于是乎就动用了VS的生成后事件 在执行Xcopy的时候碰到了点问题 Invalid number of parameters 挺奇怪的,在公 ...
- Python【sys】模块和【hashlib】模块
import sysimport osprint(sys.platform) #判断操作系统,windows10输出win32print("sys.path:",sys.path) ...
- 数据分析与展示---Matplotlib入门
简介: 一:Matplotlib库的介绍 (一)简单使用 二:区域划分subplot 三:plot函数 四:pyplot的中文显示 (一)方法一:修改rcParams参数 (二)方法二(推荐),在有中 ...
- VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)
源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...
- 2017 清北济南考前刷题Day 5 morning
期望得分:100+100+0=200 实际得分: 坐标的每一位不是0就是1,所以答案就是 C(n,k) #include<cstdio> #include<iostream> ...
- 10个好用的JQuery代码片段收集
1.预加载图片 (function($) { var cache = []; // Arguments are image paths relative to the current page. $. ...
- 用一张图片解释清楚jQuery中10个强大的遍历函数
为什么我们要进一步提炼一系列元素,难道是jQuery选择语法不够强大?让我们从示例开始.在下面提到的网页中,当一个star被点击时,我们需要给它以及左边的每个star添加class"on&q ...
- tomcat关闭后没有及时释放内存资源
1.ps -ef|grep java 找到对应的tomcat服务 2.kill -9 线程id 3.free -m 查看内存情况
- HTML5之2D物理引擎 Box2D for javascript Games 系列 第一部分
我要的是能在H5页面上跑的javascript版的Box2D啊!!! 最近想学习Javascript版本的Box2D JS物理引擎,无奈搜了半天也没找到相对比较系统的资料 官方网站也只是简单的介绍,A ...