首页 > 编程语言 >python 文件上传

python 文件上传

时间:2024-02-18 10:37:07浏览次数:21  
标签:文件 name python self file import 上传

# -*- coding: utf-8 -*-

from tornado.web import url
import tornado.web
from tornado import httpclient
from .base import BaseHandler


from utils.utils import create_password
from utils.decorators import jwt_async,auth_validated,role_validated
import peewee

import random

import io
import json

from datetime import datetime
import uuid
import aiofiles
import os
from .config import FILE_CHECK,FILE_SIZE
import math




# 文件上传
class UploadHandler(BaseHandler):

    # @jwt_async()
    async def post(self):
        """
        处理POST请求的异步函数
        """
        back_file = ""  # 保存文件的变量

        file = self.request.files['file']  # 获取上传的文件

        for key in file:  # 遍历上传的文件
            new_file_name = ''.join(str(uuid.uuid1()).split('-'))  # 生成新的文件名
            file_name = key['filename']  # 获取文件名
            file_size = len(key['body'])  # 获取文件大小
            file_content = key['body']  # 获取文件内容
            check_name = file_name.split('.')[-1]  # 获取文件的扩展名
            print(new_file_name,file_name,file_size,file_content,check_name)
            if check_name.lower() not in FILE_CHECK:  # 检查文件类型是否符合规定
                self.finish({"msg": "不是规定的文件类型", "errcode": 2})
            if file_size > FILE_SIZE:  # 检查文件大小是否超过规定
                self.finish({"msg": "文件过大", "errcode": 2})
            save_file_name = new_file_name + '.' + check_name  # 生成保存的文件名
            back_file = save_file_name  # 更新保存文件的变量

            async with aiofiles.open("./static/uploads/" + save_file_name, 'wb') as f:  # 打开文件保存路径
                await f.write(file_content)  # 写入文件内容

        self.finish({"msg": "ok", "errcode": 0, "file": back_file})  # 返回保存的文件名




urlpatterns = [

    url('/upload/',UploadHandler),

]





标签:文件,name,python,self,file,import,上传
From: https://www.cnblogs.com/luckyletop/p/18018865

相关文章

  • 25个常见的python系统设计源码(python+mysql+vue)
    收集整理了25个常见的python系统设计源码。可以用于课程作业或者毕业设计。所有系统都带源码和文档。1.网上商城系统这是一个基于python+vue开发的商城网站,平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。......
  • 基于python+django+mysql的小区物业管理系统
    该系统是基于python+django开发的小区物业管理系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可以在github给作者留言。主要功能有:业主管理、报修管理、停车管理、资产管理、小区管理、用户管理、日志管理、系统信息。演示地址http://wuye.gitapp.cn/admin后......
  • 跨域传文件时 如何确保数据安全可控传输共享?
    跨域传文件指的是在不同的域(Domain)之间安全地传输文件,这通常涉及到安全域、组织域、不同地理位置域之间。在跨域数据文件共享过程中,既要保障合法用户的正常阅读文件,又要防范在传播过程中的不可控,敏感文件的机密性受到极大挑战,如何防范敏感文件泄露,保护关键数据资产成为各组织的......
  • Ubuntu18.04服务器局域网定时同步文件
    一、文件同步首先我们先了解一下rsync命令。rsync可以在本地系统之间或本地系统与远程系统之间同步、复制和备份文件和目录。rsync通过比较源与目标文件的差异来最小化数据传输,从而提高效率和速度。rsync命令有许多可选的参数,下面简单列一下常见的几个参数:-a:以归档模......
  • 【Python】使用Python库中的pymysql执行SQL
    使用Python连接数据库在使用petl执行SQL之前,我们需要先连接到数据库。这里以MySQL为例,我们可以使用pymysql库来连接MySQL数据库。首先,安装pymysql库:pipinstallpymysql然后,编写以下代码来连接MySQL数据库:importpymysqlfrompetlimport*#连接数据库conn=pymysql.co......
  • python 倒计时功能
    importtime#导入时间模块deftimer(seconds):start_time=time.time()#获取当前时间end_time=start_time+seconds#当前时间+要倒数的秒数whiletime.time()<end_time:#当前时间小于结束时间执行remaining_time=int(end_time-time.time())#转......
  • FluentFTP实战:轻松操控FTP文件,创造高效传输体验
     概述:通过FluentFTP库,轻松在.NET中实现FTP功能。支持判断、创建、删除文件夹,判断文件是否存在,实现上传、下载和删除文件。简便而强大的FTP操作,提升文件传输效率。在.NET中,使用FluentFTP库可以方便地实现FTP的相关功能。以下是判断文件夹是否存在、文件夹的创建和删除、判断文......
  • Python 机器学习 逻辑回归算法
    ​ 1、理解逻辑回归逻辑回归建立在线性回归之上。在线性回归中,模型预测的是一个连续的数值。而在逻辑回归中,线性回归的输出被输入到Sigmoid函数中,用于预测某个类别的概率。Sigmoid函数是一个S形的曲线,它将任意实数映射到(0,1)区间,适合用来表达概率。逻辑回归广泛应用于各种......
  • Android家庭记账本开发第二天:activity_main布局文件
    本次开发记录是在开发完成之后记录的,所以能写几篇我也不知道,可能没有十篇,将这次的开发记录作为一次知识点复习的机会。开发完成之后的目录如下安卓开发相较于之前进行的Javaweb开发难度要高上不少,因为之前的都是通过tomcat服务器去运行,我们只需要将对应的页面完善好就行,但是安......
  • 100 行代码实现用户登录注册与 RESTful 接口 - 手把手教程附 Python 源码
    在开发大多数应用时,用户系统都是必不可少的部分,而我们总是需要开发围绕用户的登录,注册,获取,更新等接口。在这篇文章将带你用一百多行代码简洁地实现一套这样的用户鉴权与RESTful接口,并使用Session来处理用户的登录登出我们将使用UtilMeta框架完成接口开发,这是一个开源的Py......