本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

bootstrap-fileinput - 删除附件和多个上传字段

发布于2023-11-29 19:31     阅读(1244)     评论(0)     点赞(22)     收藏(2)


我在使用Bootstrap FileInput插件时遇到两个问题

  1. 我正在上传到“临时”文件夹来存放文件,直到提交表单为止,并且我获得了一个可以将附件和表单数据关联到的唯一密钥。现在的问题是,如果用户想要通过本机“垃圾箱”图标删除上传的文件,则上传的文件仍保留在“temp”文件夹中,因为未定义删除功能。如何设置“删除附件”按钮并将其指向“临时”文件夹中的附件?

  2. 我有一个带有 2 个选项卡的网页,每个选项卡都有一个供用户填写的表单。我需要每个表单来显示文件输入插件,但是在复制代码后(即使输入字段具有不同的名称),只有第一个文件输入字段可以正常工作,第二个文件根本不上传文件。如何在一个网页上运行该插件的多个实例?

输入字段+JS:

<h4>Attachments</h4>
<div class="col-md-12">

    <input tabindex="19" id="input" name="input[]" type="file" multiple class="file-loading">
    <p class="help-block">Max. filesize 5MB, images only (.jpg || .png || .bmp)</p>
    <script>
    var $input = $("#input");
    $input.fileinput({
        uploadUrl: "./attachments/upload.php", // server upload action
        uploadExtraData: {log:'auto',holidex:'<?php echo $_SESSION['Holidex']; ?>',user:'<?php echo $_SESSION['myusername']; ?>'},
        uploadAsync: false,
        showUpload: false, // hide upload button
        showRemove: false, // hide remove button
        maxFileCount: 10,
        'maxFileSize': 5120,
        allowedFileTypes: ["image", "video"]
    }).on("filebatchselected", function(event, files) {
        // trigger upload method immediately after files are selected
        $input.fileinput("upload");
    });
    </script>

</div>

上传.php

<?php
session_start();

if(isset($_FILES['input'])) {

    // define variables
    $holidex = $_POST['holidex'];
    $user = $_POST['user'];
    $output_dir = "./".$holidex."/temp/".$user."/";

    // check whether temporary folder exists, otherwise create
    if (!file_exists($output_dir)) {
        mkdir($output_dir, 0755, true);
    }

    $ret = array();

//  This is for custom errors;  
/*  $custom_error= array();
    $custom_error['jquery-upload-file-error']="File already exists";
    echo json_encode($custom_error);
    die();
*/
    $error = $_FILES["input"]["error"];
    //You need to handle  both cases
    //If Any browser does not support serializing of multiple files using FormData() 
    if(!is_array($_FILES["input"]["name"])) //single file
    {
        $fileName = $_FILES["input"]["name"];
        move_uploaded_file($_FILES["input"]["tmp_name"],$output_dir.$fileName);
        $ret[]= $fileName;
    }
    else  //Multiple files, file[]
    {
      $fileCount = count($_FILES["input"]["name"]);
      for($i=0; $i < $fileCount; $i++)
      {
        $fileName = $_FILES["input"]["name"][$i];
        move_uploaded_file($_FILES["input"]["tmp_name"][$i],$output_dir.$fileName);
        $ret[]= $fileName;
      }

    }
    echo json_encode($ret);

} else { echo "No data received."; }
 ?>

解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/549961/ceb9b3674ee39f55282c/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

22 0
收藏该文
已收藏

评论内容:(最多支持255个字符)