zoukankan      html  css  js  c++  java
  • python django 实现上传文件到服务器

    下面贴出事例代码

    #----图片上传
    def otherimgupload(request):
        timepath=time.strftime('%Y/%m/%d/',time.localtime(time.time()))
        nowtime=int(time.time())
        hostname = socket.gethostname()
        if request.FILES:
            file = request.FILES.getlist('file')#拿到上传文件
            if not file:
                return None
            listall=[]
            for f in file:
                filetype=f.name.split(".")[-1]#获取文件类型
                #视频上传
                if (filetype.lower() in ["mp4","mov","avi","3gp","3gp2","wav","rm","mpg","asf","mid"]):
                    mediatype="video"
                    tmp = random.randint(100, 999)#产生随机数
                    newpath="/mnt/data/resources/other/"+timepath
                    imgpath=newpath+str(nowtime)+str(tmp)+"."+filetype
                    databasepath="other/"+timepath+str(nowtime)+str(tmp)+"."+filetype
                    if not os.path.isdir(newpath):
                        os.makedirs(newpath)
            
                    des_origin_f = open(imgpath,"w")#拿到打开文件对象
                    for chunk in f.chunks():
                        des_origin_f.write(chunk)#将文件写入磁盘
                    des_origin_f.close()#关闭
    picurl="http://"+hostname+"img.zz91.com/other/"+timepath+str(nowtime)+str(tmp)+"."+filetype else: mediatype="pic" suportFormat = ['BMP', 'GIF', 'JPG','JPGE', 'PNG','JPEG','jpg','mp4'] tempim = StringIO.StringIO() mstream = StringIO.StringIO(f.read()) im = Image.open(mstream) rheight=800 rwidth=800 pwidth=im.size[0] pheight=im.size[1] rate = int(pwidth/pheight) if rate==0: rate=1 nwidth=800 nheight=800 if (pwidth>rwidth): nwidth=rwidth nheight=nwidth /rate else: nwidth=pwidth nheight=pheight if (pheight>rheight): nheight=rheight nwidth=rheight*rate else: nwidth=pwidth nheight=pheight kzname=im.format if kzname not in ["mp4","mov","avi","3gp","3gp2","wav","rm","mpg","asf","mid"]: im.thumbnail((nwidth,nheight),Image.ANTIALIAS) #logo水印 if nwidth/2>130: wm = Image.open(nowpath+"/media/logo.png") layer = Image.new('RGBA', im.size, (0,0,0,0)) layer.paste(wm, (im.size[0] - 120, im.size[1] - 50)) im = Image.composite(layer, im, layer) #加字体水印 fontPath=nowpath+'/media/SIMHEI.TTF' fontSize=18 font = ImageFont.truetype(fontPath,fontSize) draw = ImageDraw.Draw(im) if nwidth/2>130: draw.text((nwidth/2-60,nheight/2-25),u'www.zz91.com',(0,0,0),font=font) draw.text((nwidth/2-70,nheight/2),unicode('ZZ91再生网专用','utf-8'),(0,0,0),font=font) del draw tmp = random.randint(100, 999) newpath="/mnt/data/resources/other/"+timepath imgpath=newpath+str(nowtime)+str(tmp)+"."+kzname databasepath="other/"+timepath+str(nowtime)+str(tmp)+"."+kzname if not os.path.isdir(newpath): os.makedirs(newpath) im.save(imgpath,kzname,quality = 80) mstream.closed tempim.closed #picurl="http://img4.zz91.com/300x15000/other/"+timepath+str(nowtime)+str(tmp)+"."+kzname picurl="http://"+hostname+"img.zz91.com/other/"+timepath+str(nowtime)+str(tmp)+"."+kzname #picurl="http://images.zz91.com/images.php?width=300&height=15000&picurl=http://img1.zz91.com/other/"+timepath+str(nowtime)+str(tmp)+"."+kzname picid=0 if source=="products": sql="insert into products_pic(product_id,pic_address,gmt_created) values(0,%s,%s)" result=dbc.updatetodb(sql,[databasepath,gmt_created]) if result: picid=result[0] # 发布与修改产品时,存入产品图片到产品相册 if company_id: sql = "insert into photo_abum(company_id,album_id,is_mark,pic_address,gmt_created," "gmt_modified) values(%s,%s,%s,%s,%s,%s)" dbc.updatetodb(sql, [company_id, 5, 1, databasepath, gmt_created, gmt_created]) else: sql="insert into other_piclist(path,source,gmt_created) values(%s,%s,%s)" result=dbc.updatetodb(sql,[databasepath,source,gmt_created]) if result: picid=result[0] # 手机端发布话题与修改头像,存入互助图片到产品相册 if company_id: sql = "insert into photo_abum(company_id,album_id,is_mark,pic_address,gmt_created," "gmt_modified) values(%s,%s,%s,%s,%s,%s)" dbc.updatetodb(sql, [company_id, 6, 1, databasepath, gmt_created, gmt_created]) list={'path':picurl,'id':picid,'databasepath':databasepath,'mediatype':mediatype} listall.append(list) return listall return None

      

  • 相关阅读:
    4. Git撤销修改
    3. Git如何管理修改
    2. Git的工作区、暂存区和版本库
    1. Git创建仓库、查看工作区状态
    微信平台接入Web页面功能接口(C#)
    Python之路【第六篇】:Python运算符
    Python之路【第五篇】:Python基本数据类型
    Python之路【第四篇】:Pycharm集成开发环境
    Python之路【第二篇】:Python简介、解释器与编码
    Python之路【第七篇】:Python流程控制
  • 原文地址:https://www.cnblogs.com/leonardchen/p/8124152.html
Copyright © 2011-2022 走看看