📜  在Python中上传文件

📅  最后修改于: 2022-05-13 01:54:59.266000             🧑  作者: Mango

在Python中上传文件

在本文中,我们将研究使用cgi 环境在Python中上传文件的过程。经常会遇到各种 Web 应用程序,在这些应用程序中,客户端或用户需要以文件的形式(例如,图像文件、音频文件、文本文件等)上传数据。上传文件有两个方面,因为该特定交互有两个方面,即客户端和服务器端。需要创建一个表单来接受文件形式的用户输入。
HTML 表单具有不同的属性,您可以将其设置为,例如,要提交上传数据的 URL 是通过 action 属性完成的。在 HTML 表单中需要一个名为multi-part/form-dataenctype 属性来上传文件。其次,我们将需要使用 HTML 的输入标签并将其设置为“文件”。除了表单中的输入按钮之外,这还会添加一个上传按钮。下面的代码示例很好地演示了它:

html


   
    

Upload File:

      

 


Python3
import os
 
fileitem = form['filename']
 
# check if the file has been uploaded
if fileitem.filename:
    # strip the leading path from the file name
    fn = os.path.basename(fileitem.filename)
     
   # open read and write the file into the server
    open(fn, 'wb').write(fileitem.file.read())


上述 HTML 代码的输出如下所示:

在上面的代码中,属性操作有一个Python脚本,当用户上传文件时会执行该脚本。在服务器端,当Python脚本接受上传的数据时,字段存储对象从表单的“文件名”中检索提交的文件名。现在所有服务器需要做的就是读取已上传的文件并将其写入“fileitem”(例如,)。在整个过程结束时,上传的文件现在将被写入服务器。
因此, Python脚本看起来有点像下面的代码:

Python3

import os
 
fileitem = form['filename']
 
# check if the file has been uploaded
if fileitem.filename:
    # strip the leading path from the file name
    fn = os.path.basename(fileitem.filename)
     
   # open read and write the file into the server
    open(fn, 'wb').write(fileitem.file.read())

注意:上面的Python脚本并不适用于每个服务器,因为每个服务器都有自己的依赖项,以允许出于安全原因在其服务器中运行脚本。例如,如果使用 Azure 服务器,则需要导入 msvcrt,它是 Microsoft Visual C++ 运行时模块才能工作。