1
我是新來的web2py,我不得不寫一個文件上傳腳本。web2py查看錯誤
現在搜索槽互聯網絡我發現了一個腳本,它那種地方工作對我CMP 把它給服務器後,我收到無效的視圖(uploda_zipa/upload_file.html)
的代碼是:
import datetime
timestamp = datetime.datetime.today()
db.define_table('files',
Field('title', 'string'),
Field('uploaded_data', 'upload'),
Field('created_on','datetime',default=timestamp))
db.files.title.requires = IS_NOT_EMPTY()
db.files.uploaded_data.requires = IS_NOT_EMPTY()
#Now, lets add an action the our controller
def upload_file():
url = ""
form = SQLFORM(db.files, showid=False)
if form.accepts(request.vars, session):
response.flash = T('File uploaded successfully!')
url = URL(r=request, f="download",
args = db(db.files.title == request.vars.title).select(orderby=~db.files.created_on)[0].uploaded_data)
return dict(form=form, cknum=request.vars.CKEditorFuncNum, url=url)
我也想知道如何設置文件夾上傳文件的路徑或者是默認的方式。該計劃是水木清華就像一個文件被上傳到特定的文件夾,並比它得到由不同的腳本處理
謝謝
似乎web2py總是創建一個表來跟蹤文件。 是否有可能不創建此表,第二我希望該文件具有其原始名稱。現在我用它做了os.rename 還有其他方法嗎? – Yebach
web2py不會創建表來跟蹤文件 - 您創建表並向其添加上傳字段。您可以使用SQLFORM.factory上傳沒有數據庫表的文件。由於安全原因,該文件被重命名,儘管原文件名在新文件名的一部分內被b16編碼,所以它可以被解碼(內置下載機制自動執行此操作)。 – Anthony
如果你想覆蓋自動命名(這確實存在安全風險),你可以跳過表單驗證(它處理文件保存)並自己處理文件上傳(request.vars.field是一個cgi.FieldStorage對象 - - 文件對象位於request.vars.field.file中)。 – Anthony