多种上传表格 [英] Multiple Upload Forms

查看:85
本文介绍了多种上传表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有许多需要验证的上传文件格式(简称示例):

I have a number of upload file forms that need validating (shortened example):

<form>
<input type='file' name='file[]' class='file_upload_button'>
<input type='file' name='file[]' class='file_upload_button'>
<input type='file' name='file[]' class='file_upload_button'>
<input type='file' name='file[]' class='file_upload_button'>

<input type='submit' value='Save Draft' class='save_draft_button'>
</form>

我希望每个上传输入都可以通过文件类型进行验证,但是我很难理解需要做什么.这是我正在尝试的事情,但是显然这是不对的!

And I want each upload input to be validated by file type, but I'm having a hard to understanding what needs to be done. This is the kind of thing I'm trying, but evidently it's not right!

if (! empty($_FILES['file']['name'][0])) {  
// VALIDATION goes here
    }

但是我不知道如何选择第一个上载字段-我尝试使用$ _FILES ['file'] ['name'] [0],但无济于事.任何帮助将不胜感激!

But I can't figure out how to select, for example, the first upload field - I've tried using $_FILES['file']['name'][0] but to no avail. Any hep would be appreciated!

推荐答案

我偶然地昨天写了以下脚本.
这用于调整图像的大小,PNG或GIF或JPEG.
这需要'./tmp'目录.
如果您愿意,请参考此.

By chance, I wrote the following script yesterday.
This is for resizing images, PNG or GIF or JPEG.
This requires './tmp' directory.
If you like, please refer to this.

<?php

$html = PHP_EOL;

if (!empty($_FILES['images'])) {

    $finfo = new finfo(FILEINFO_MIME);

    for ($i=0;;$i++) {

        switch (true) {      
            case (!isset($_FILES['images']['tmp_name'][$i])):
                break 2;
            case (!is_uploaded_file($filename = $_FILES['images']['tmp_name'][$i])):
            case (($type = $finfo->file($filename)) === false):
                continue 2;
            case ($type === 'image/png; charset=binary'):
                $img = imagecreatefrompng($filename);
                break;
            case ($type === 'image/jpeg; charset=binary'):
                $img = imagecreatefromjpeg($filename);
                break;
            case ($type === 'image/gif; charset=binary'):
                $img = imagecreatefromgif($filename);
                break;
            default:
                continue 2;
        }

        list($width, $height) = getimagesize($filename);
        $new_width  = 100;
        $new_height = (int)($new_width * $height / $width);
        $new_img    = imagecreatetruecolor($new_width, $new_height);
        imagecopyresampled(
            $new_img,                $img,
            0,          0,           0,      0,
            $new_width, $new_height, $width, $height
        );

        switch (true) {
            case ($type === 'image/png; charset=binary'):
                imagepng($new_img, $filename);
                break;
            case ($type === 'image/jpeg; charset=binary'):
                imagejpeg($new_img, $filename);
                break;
            default:
                imagegif($new_img, $filename);
        }

        $new_filename = './tmp/'.basename($filename);
        if (move_uploaded_file($filename,$new_filename))
            $html .= sprintf('<p><img src="%s" /></p>'.PHP_EOL, $new_filename);

    }

}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Resizer</title>
<style>
label { display: block; }
</style>
</head>
<body>
<fieldset>
<legend>Select Image File (PNG, JPEG, GIF available)</legend>
<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<label><input type="file" name="images[]" /></label>
<label><input type="file" name="images[]" /></label>
<label><input type="file" name="images[]" /></label>
<label><input type="submit" value="Resize!" /></label>
</form>
</fieldset>
<fieldset>
<legend>Resized Images</legend><?php 

echo $html; 

?>
</fieldset>
</body>
</html>

这篇关于多种上传表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆