在web2py上传文件

时间:2016-06-23 20:28:44

标签: python web2py

我正在使用web2py框架。 我已经通过SQLFORM上传了一个文件,文件存储在“上传文件夹”中,现在我需要从控制器读取这个txt文件,我应该在default.py中定义的函数中使用什么文件路径?

   if (response.IsSuccessStatusCode)
        {
            data = response.Content.ReadAsAsync<Restaurant>().Result;
            Session["RestInfo"] = data;
            Response.Redirect("SearchResult.aspx");
        }

2 个答案:

答案 0 :(得分:0)

您可以加入应用程序目录和上传文件夹来构建文件路径。 做这样的事情:

import os

filepath = os.path.join(request.folder, 'uploads', uploaded_file_name)
file = open(filepath, "rb")
  

request.folder :应用程序目录。例如,如果   应用程序是#34; welcome&#34;,request.folder设置为绝对路径   &#34; /path/to/welcome&#34 ;.在您的程序中,您应该始终使用它   变量和os.path.join函数来构建文件的路径   需要访问。

阅读request.folder

答案 1 :(得分:0)

上传文件的转换后名称存储在数据库表的上传字段中,因此您需要一种方法来查询通过SQLFORM提交插入的特定记录,以获取其名称。存储的文件。假设您知道记录ID,它的外观如下:

stored_filename = db.mytable(record_id).my_upload_field
original_filename, stream = db.mytable.my_upload_field.retrieve(stored_filename)
stream.read()

当您将文件名传递给上传字段的.retrieve方法时,它将返回一个元组,其中包含原始文件名以及打开的文件对象(在上面的代码中称为stream)。