2016-08-25 3 views
0

나는 회사 로고를 저장하기 위해 맞춤 칼럼을 추가했습니다. 나는 아래와 같은 무들의 파일 API를 사용했다 :무들에 업로드 된 이미지의 경로를 가져 오기

$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에 사용 된 구성 요소, 파일 영역, 컨텍스트 및 itemid (선택적으로 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

    :

에서이 모든 합리적인 예는있다

관련 문제