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

  

posted @ 2017-12-27 09:17  leonardchen  阅读(5700)  评论(0编辑  收藏  举报