0

iframe のように、アップロードした後、cakephp アプリケーションの本体内で PDF ファイルを表示しようとしています。アップロードは正常に機能しますが、私が今抱えている課題は、pdf ファイルを開くことです。

これが私のコントローラーのアップロード機能で、正常に動作しています

function uploadFile() {
$file = $this->data['QmsProcedureKnowledgeManagement']['file'];
if ($file['error'] === UPLOAD_ERR_OK) {
$id = String::uuid();
if (move_uploaded_file($file['tmp_name'], APP . 'qms_procedure_km/' . $file['name'])) {
$this->request->data['QmsProcedureKnowledgeManagement']['filename'] = $file['name'];
$this->request->data['QmsProcedureKnowledgeManagement']['filesize'] = $file['size'];
$this->request->data['QmsProcedureKnowledgeManagement']['filemime'] = $file['type'];
return true;
}
}
return false;
}

そして、これがview.ctpでpdfを表示しようとしている方法です

<?php echo $this->Html->link(APP.'qms_procedure_km/'. $qmsProcedureKnowledgeManagement['QmsProcedureKnowledgeManagement']['filename']); ?>

前もって感謝します

4

1 に答える 1

0

内部にあるファイルにはAPP . 'qms_procedure_km/'、Webブラウザから直接アクセスすることはできません。これは仕様によるものです。

URLを使用して誰でもPDFにアクセスできるようにする場合は、Webブラウザから直接アクセスできる場所にファイルを保存する必要があります(例WWW_ROOT . 'qms_procedure_km/')。

特定のユーザー(ログインしているユーザーなど)のみがPDFにアクセスできるようにする場合は、Webブラウザーから直接アクセスできない場所にファイルを保存し続ける必要がありますが、コントローラーアクションを作成する必要があります。これにより、ユーザーがPDFを表示し、CakeResponse::file()(CakePHP> = 2.3.0)またはメディアビュー(CakePHP <2.3.0)を使用してPDFを表示できるようになります。

于 2013-02-19T06:41:22.453 に答える