【问题标题】:jquery file upload php database blueimpjquery 文件上传 php 数据库 blueimp
【发布时间】:2017-05-29 17:31:34
【问题描述】:

我正在使用这个插件,我正在寻找很多关于它的信息,我想帮助我。 1)当超过5000个文件传递时不再生成jsone 关于这一点,我正在努力通过数据库的 ID 进行调用,但我仍然没有得到例如 fotos.php? Id = 1 并且只生成该查询的 json 2) 更新 更新数据库中已有的数据

这是我的 php 文件,位于 /server/php/index.php

class CustomUploadHandler extends UploadHandler {


protected function initialize() {
    $this->db = new mysqli(
        $this->options['db_host'],
        $this->options['db_user'],
        $this->options['db_pass'],
        $this->options['db_name']
    );
    parent::initialize();
    $this->db->close();
}

protected function handle_form_data($file, $index) {
    $file->title = @$_REQUEST['title'][$index];
    $file->description = @$_REQUEST['description'][$index];
    $file->padre = @$_REQUEST['padre'][$index];


}

protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
                                      $index = null, $content_range = null) {
    $file = parent::handle_file_upload(
        $uploaded_file, $name, $size, $type, $error, $index, $content_range
    );
    if (empty($file->error)) {
        $sql = 'INSERT INTO `'.$this->options['db_table']
            .'` (`ruta_adjunto`, `id_documento`, `tipo_adjunto`, `nombre_adjunto`, `descripcion_adjunto`)'
            .' VALUES (?, ?, ?, ?, ?)';
        $query = $this->db->prepare($sql);
        $query->bind_param(
            'sisss',
            $file->name,
            $file->padre, //id_documento luego ver como traer el id
            $file->type,
            $file->title,
            $file->description
        );
        $query->execute();
        //echo json_encode($query->error);
        $file->id_adjunto = $this->db->insert_id;
    }
    return $file;
}


protected function set_additional_file_properties($file) {
    parent::set_additional_file_properties($file);
    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        $sql = 'SELECT `id_adjunto`, `id_documento`, `ruta_adjunto`, `nombre_adjunto`, `descripcion_adjunto` FROM `'
            .$this->options['db_table'].'` WHERE `ruta_adjunto`=?';
        $query = $this->db->prepare($sql);
        $query->bind_param('s', $file->name);
        $query->execute();
        $query->bind_result(
            $id_adjunto,
            $id_documento,
            $titulo_documento,
            $descripcion_documento
        );
        while ($query->fetch()) {
            $file->id = $id_adjunto;
            //$file->type = $type;
            $file->padre = $id_documento;
            $file->title = $titulo_documento;
            $file->description = $descripcion_documento;
        }
    }
}

public function delete($print_response = true) {
    $response = parent::delete(false);
    foreach ($response as $name => $deleted) {
        if ($deleted) {
            $sql = 'DELETE FROM `'
                .$this->options['db_table'].'` WHERE `ruta_adjunto`=?';
            $query = $this->db->prepare($sql);
            $query->bind_param('s', $name);
            $query->execute();
        }
    }
    return $this->generate_response($response, $print_response);
}

}

$upload_handler = new CustomUploadHandler($options);

所以我在文件upload.html中有

{% for (var i=0, file; file=o.files[i]; i++) { %}

<tr class="template-upload fade">
    <td>
        <span class="preview"></span>
    </td>
    <td>
    <label class="title">
        <span>Nombre:</span><br>
        <input name="title[]" class="form-control">
        </label>
    </td>
    <td>
    <label class="description">
        <span>Descripcion:</span><br>
        <input name="description[]" class="form-control">
        </label>
        <input name="padre[]" value="<?php echo $_GET['id'];?>" class="form-control">
    </td>
    <td>
        <p class="name">{%=file.name%}</p>
        <strong class="error text-danger"></strong>
    </td>
    <td>
        <p class="size">Procesando...</p>
        <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="width:0%;"></div></div>
    </td>
    <td>
        {% if (!i && !o.options.autoUpload) { %}
            <button class="btn btn-primary start" disabled>
                <i class="glyphicon glyphicon-upload"></i>
                <span>Comenzar</span>
            </button>
        {% } %}
        {% if (!i) { %}
            <button class="btn btn-warning cancel">
                <i class="glyphicon glyphicon-ban-circle"></i>
                <span>Cancelar</span>
            </button>
        {% } %}
    </td>
</tr>

{% } %}

这里有一些参考

Reference 1

Reference 2

【问题讨论】:

    标签: php jquery mysql json blueimp


    【解决方案1】:

    虽然我认为这不是最好的解决方案,但使用文件服务器 /php/UploadHandler.php 的 user_dirs

    在这一行保持这样

    'user_dirs' => true,
    

    在upload.html文件中

    session_start(); $_SESSION['father'] = $_GET['id'];
    

    并且在 /server/php/index.php

    protected function get_user_id() {
        @session_start();
    
        foreach( $_SESSION as $key=>$father ) {
            $username = $father;
        }
        return $username;
    
        #return session_id();
    }
    

    它的作用是将 ID 作为会话传递,从而查看分配的文件夹。

    虽然我有一个文件夹,所有文件都放在一起,但制作一个小脚本,生成一个带有文件 ID 号的文件夹

    <?php
    

    require_once('../inc/conexion.php');

    $db = db::getInstance();

    $res = $db->query("SELECT * FROM adjuntos LIMIT 2000");

    $ruta = '../admin/server/php/files/';

    while($reg = $res->fetch_array()){

    if(file_exists($ruta.$reg['id_documento'])){
        $origen = '../pdfs/'.$reg['ruta_adjunto'];
        $destino = $ruta.$reg['id_documento'].'/'.$reg['ruta_adjunto'];
        if(!copy($origen, $destino)){
            echo 'error al copiar el archivo del id: '.$reg['id_documento'];
        }
    }else{
        $carpeta = $ruta.$reg['id_documento'];
        if(!mkdir($carpeta, 0777, true)){
          echo 'Error al crear la CARPETA CON ID: '.$reg['id_documento'];
        }else{
            $origen = '../pdfs/'.$reg['ruta_adjunto'];
            $destino = $ruta.$reg['id_documento'].'/'.$reg['ruta_adjunto'];
            if(!copy($origen, $destino)){
                echo 'error al copiar el archivo del id: '.$reg['id_documento'];
            }
        }
    }
    

    } ?>

    【讨论】:

      猜你喜欢
      • 2012-07-15
      • 1970-01-01
      • 2013-08-12
      • 2017-10-31
      • 2013-04-29
      • 2015-09-29
      • 2014-06-18
      • 1970-01-01
      相关资源
      最近更新 更多