2016-08-25 154 views
0

我已經添加了自定義列來存儲公司徽標。我已經使用了moodle的文件API,如:獲取Moodle上傳圖片的路徑

$mform->addElement('filepicker', 'certificatelogo', 'Company Logo', null, 
       array('maxbytes' => $maxbytes, 'accepted_types' => '*')); 
$mform->setDefault('certificatelogo', '0'); 
$mform->addHelpButton('certificatelogo', 'certificatelogo', 'certificate'); 

一旦表單被提交,itemid將被存儲在自定義列中。說「648557354」

現在我需要獲得圖像打印證書上的標誌。如何從itemid獲取圖像路徑?我是否需要存儲任何其他信息來檢索圖像?

回答

2

返回的itemid是在顯示錶單時存儲文件的草稿區域的臨時ID。您需要在提交表單時將文件複製到其「真實」位置,否則該文件將在幾天後自動刪除(並且只能由最初上載該文件的用戶訪問)。

我總是推薦使用filemanager元素,如果你打算保持文件周圍(filepicker元素是你想要處理和丟棄的文件,比如上傳CSV文件數據解析並添加到數據庫)。如何使用它

詳情請看這裏: https://docs.moodle.org/dev/Using_the_File_API_in_Moodle_forms#filemanager

但基本步驟是:從「真正的」區域面積草案(file_prepare_standard_filemanager)

  1. 複製任何現有的文件。
  2. 顯示錶格。
  3. 提交時,將草稿區域中的文件複製到「真實」區域(file_postupdate_standard_filemanager)。
  4. 如果要將文件顯示給用戶,請獲取存儲在文件區域(由file_prepare_standard_filemanager和file_postupdate_standard_filemanager中使用的組件,filearea,上下文以及可選的itemid定義)中存儲的文件的列表。你可以這樣做:$ fs = get_file_storage(); $ FS-> get_area_files()。
  5. 對於這些文件(可能只有一個文件,在你的情況下),使用moodle_url :: make_pluginfile_url生成URL。
  6. 確保你的插件在lib.php中有一個PLUGINNAME_pluginfile()函數,用來檢查傳入的文件請求,對它們進行安全檢查,然後提供文件。

有這一切在一個合理的例子:https://github.com/AndyNormore/filemanager