如何修改表单数据

How to modify formdata

本文关键字:表单 数据 修改 何修改      更新时间:2023-09-26

我正在使用HTML5 AJAX图像上传,我想在表单数据(如image_user_type等)中添加一些额外的信息,但我无法在php中找到image_user_type和其他code.image_user_type等的值,这些信息是额外的信息基础,我必须在此基础上为不同类型的/图像组创建不同的文件夹,例如XYZ grop pqr组.任何帮助都应不胜感激。

.HTML

<form method="post" enctype="multipart/form-data"  action="<?php echo Yii::app()->request->baseUrl?>/index.php/Feedback/FeedImage">
  <input type="file" name="images" id="images"  />
  <input type="hidden" value="xyz" name="image_user_type" />
  <button type="submit" id="btn"><?php echo Yii::t('strings','Upload Files!');?></button>
</form>

.JS

<script type="text/javascript">
  (function () {
    var userimage=$("#waiter_img");
    var input = document.getElementById("images"), 
        formdata = false;
    function showUploadedItem (source) {
            userimage.attr('src',source);   
    }   
    if (window.FormData) {
        formdata = new FormData();
        document.getElementById("btn").style.display = "none";
    }
    input.addEventListener("change", function (evt) {
        //document.getElementById("response").innerHTML = ""
        userimage.attr('src','<?php echo Yii::app()->request->baseUrl ?>/images/loader.gif');
        var i = 0, len = this.files.length, img, reader, file;
        for ( ; i < len; i++ ) {
            file = this.files[i];
            if (!!file.type.match(/image.*/)) {
                if ( window.FileReader ) {
                    reader = new FileReader();
                    reader.onloadend = function (e) { 
                        showUploadedItem(e.target.result, file.fileName);
                    };
                    reader.readAsDataURL(file); 
                }
                if (formdata) {
                    console.log(file);
                    formdata.append("images[]", file);
                    formdata.append("image_user_type",$("#image_user_type").val()); 
                }
            }   
        }
        if (formdata) {
                $.ajax({
                url: "<?php echo Yii::app()->request->baseUrl?>/index.php/Feedback/FeedImage",
                type: "POST",
                data: formdata,
                processData: false,
                contentType: false,
                success: function (res) {
                }
            });
        }
    }, false);
}());

.PHP

 public function actionFeedImage()
    {
        echo $image_type=$_POST['image_user_type']; 
        foreach ($_FILES["images"]["error"] as $key => $error) {
        if( !is_dir(Yii::app()->basePath.'/../images/feedback') ) mkdir(Yii::app()->basePath.'/../images/feedback');
        if( !is_dir(Yii::app()->basePath.'/../images/feedback/'.$image_type) ) mkdir(Yii::app()->basePath.'/../images/feedback/'.$image_type);
        if ($error == UPLOAD_ERR_OK) {
        $name = Yii::app()->session['admin_id']."-".date('Y-m-d H:i:s.')."-".$_FILES["images"]["name"][$key];
        move_uploaded_file( $_FILES["images"]["tmp_name"][$key],Yii::app()->basePath.'/../images/feedback/'.$image_type.'/'. $image_without_space);
     }

正如@pat建议的那样,尝试清理一些代码。

如果您这样做是为了学习,那就去做吧,我们将尽力为您提供帮助。

另一方面,我认为最好使用一个在漂亮的用户界面中处理所有这些的扩展,我推荐 XUpload

查看有关使用 XUpload 发送其他表单数据的 wiki

(免责声明:我是扩展的作者)

我们可以使用以下方法获取表单数据的额外信息:-

$image_type=$_REQUEST['image_user_type'];