0

画像やPDFを送信できるフロントエンドシステムを作成しました。

後から考えると、これを2つの別々のフィールドに分けていたはずですが、500を超える提出があるため、今では遅すぎます。

最初にファイルの形式を検出してから、imgjpg / pngの場合はファイルを表示し、pdfの場合はリンクとして表示するにはどうすればよいですか?

現時点でのコードは次のとおりです。

<?php if(get_field('submit_image_or_pdf1') != "") { ?>
<img src="<?php echo the_field('submit_image_or_pdf1');?>" alt="<?php echo the_title(); ?> - <?php echo the_field('submit_submission_production_title'); ?>" /> 
<?php } ?>

これは、形式に関係なく実際にファイルを出力するものです。

<?php echo the_field('submit_image_or_pdf1');?>

アップデート:

<?php $field = get_field('submit_image_or_pdf1');
    function ($field) {
    if ($_FILES[$field]['type'] == 'application/pdf') { ?>
        <a href="<?php echo the_field('submit_image_or_pdf1');?>">View PDF</a>
        <br /><br /><br /><br />
    <?php } else { ?>
        <img src="<?php echo the_field('submit_image_or_pdf1');?>" alt="<?php echo the_title(); ?> - <?php echo the_field('submit_submission_production_title'); ?>" /> 
        <br /><br /><br /><br />
    <?php } ?>
<?php } ?>
4

1 に答える 1

1

投稿されたファイルフィールドからいつでも拡張子を取得できます。任意のファイルに「.pdf」という名前を付けることができるため、完全に正確ではありません。したがって、ユーザーからファイルを受け入れるときは、ウイルスなどが含まれている可能性があるので注意してください。

function the_field($fileFieldName) {
    if ($_FILES[$fileFieldName]['type'] == 'application/pdf') {
        echo '<a href="/download-the-file-link">Download</a>';
    } else {
        echo '<img src="/the-image-source" />';
    }
}

更新:次の例は、get_field()がファイルのパスを返す場合に機能します。

<?php $field = pathinfo(get_field('submit_image_or_pdf1'));?>
<?php if (isset($field['extension']) && $field['extenstion'] == 'pdf') { ?>
    <a href="<?php echo the_field('submit_image_or_pdf1'); ?>">View PDF</a>
<?php } else { ?>
    <img src="<?php echo the_field('submit_image_or_pdf1'); ?>" alt="<?php echo the_title(); ?> - <?php echo the_field('submit_submission_production_title'); ?>" /> 
<?php } ?>

<br /><br /><br /><br />
于 2013-03-25T14:25:49.190 に答える