bootstrap-fileinput 说明文档:http://plugins.krajee.com/file-input

有许多人希望学习使用bootstrap-fileinput jQuery插件实现AJAX上传的查询和请求。如何构建服务器代码(例如PHP)来解析AJAX响应并将数据发送回插件?这个webtip提到了一个PHP服务器端处理使用bootstrap-fileinput插件来处理基于ajax的上传的例子。

关于bootstrap-fileinput

 <input id="images" name="images[]" type="file" multiple>

bootstrap-fileinput jQuery插件通过Krajee是一种先进的HTML 5文件输入使用引导3.x的CSS样式设计的。这是一个简单而强大的文件管理工具和解决方案,适用于使用HTML 5和CSS 3功能(大多数现代浏览器支持)的Web开发人员。除了高级风格和布局,该插件提供了各种文件的文件预览,多个选择包括拖放,基于ajax的上传与进度条,设置初始预览和删除等。

先决条件

确保遵循并遵守引导文件输入jQuery插件的所有先决条件。在运行下面的其他脚本之前,您必须先加载引导程序CSS和jQuery库。

输入标记(HTML)

让我们考虑你有以下的标记来初始化输入。考虑的方案是基于Ajax的多个图像的上传。你的标记可以像下面一样简单(注意idname属性)。

但是,在很多情况下,您可能需要提交其他表单域或其他数据。让我们考虑你在你的表单中有以下额外的领域。

 <input id="userid" name="userid" type="hidden">
<input id="username" name="username" type="text">

初始化插件(Javascript)

我们来考虑一个通过Ajax上传文件的简单方案。您将需要设置JavaScript来初始化引导文件输入插件。请注意,这里的例子使用jQuery。当文件上传时,你想发送额外的表格数据(即user_iduser_name)。你可以设置所有这些如下所述。默认情况下,插件将通过并行ajax调用以异步模式上传。你可以通过uploadAsync属性来控制它。

 $(document).on("ready", function() {
$("#images").fileinput({
uploadAsync: false,
uploadUrl: "/path/to/upload.php" // your upload server url
uploadExtraData: function() {
return {
userid: $("#userid").val(),
username: $("#username").val()
};
}
});
});

服务器代码(PHP)

让我们看看上面提到的将接收和处理数据的服务器代码。upload.php

 // upload.php
// 'images' refers to your file input name attribute
if (empty($_FILES['images'])) {
echo json_encode(['error'=>'No files found for upload.']);
// or you can throw an exception
return; // terminate
} // get the files posted
$images = $_FILES['images']; // get user id posted
$userid = empty($_POST['userid']) ? '' : $_POST['userid']; // get user name posted
$username = empty($_POST['username']) ? '' : $_POST['username']; // a flag to see if everything is ok
$success = null; // file paths to store
$paths= []; // get file names
$filenames = $images['name']; // loop and process files
for($i=0; $i < count($filenames); $i++){
$ext = explode('.', basename($filenames[$i]));
$target = "uploads" . DIRECTORY_SEPARATOR . md5(uniqid()) . "." . array_pop($ext);
if(move_uploaded_file($images['tmp_name'][$i], $target)) {
$success = true;
$paths[] = $target;
} else {
$success = false;
break;
}
} // check and process based on successful status
if ($success === true) {
// call the function to save all data to database
// code for the following function `save_data` is not
// mentioned in this example
save_data($userid, $username, $paths); // store a successful response (default at least an empty array). You
// could return any additional response info you need to the plugin for
// advanced implementations.
$output = [];
// for example you can get the list of files uploaded this way
// $output = ['uploaded' => $paths];
} elseif ($success === false) {
$output = ['error'=>'Error while uploading images. Contact the system administrator'];
// delete any uploaded files
foreach ($paths as $file) {
unlink($file);
}
} else {
$output = ['error'=>'No files were processed.'];
} // return a json encoded response for plugin to process successfully
echo json_encode($output);

概要

这是一个基本的设置,你需要做的上传文件通过Ajax和插件应该处理它。请注意,对于您的实际情况,您可能需要调整各种其他设置,并添加到上面的基本设置。您可能还需要控制插件的其他各种特性,使其工作,你所希望的方式为您的整个应用程序-样uploadAsyncinitialPreviewinitialPreviewDelete等等。同样地,你可以使用各种事件的插件触发或执行其他操作-例如filepreuploadfileuploaded等等

基于Ajax的文件上传使用FileInput插件(使用谷歌翻译作者的原文,大致意思是对的,自己把握)的更多相关文章

  1. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  2. Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件

    一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...

  3. 基于 Django的Ajax实现 文件上传

    ---------------------------------------------------------------遇到困难的时候,勇敢一点,找同学朋友帮忙,找导师求助. Ajax Ajax ...

  4. Ajax 与文件上传

    一 Ajax篇 1 ajax简介(Asynchronous Javascript And XML) 异步,Js,XML,即使用Javascript语言与服务器进行异步交互,传输的数据为xml(可扩展标 ...

  5. ajax与文件上传

    一.ajax ajax(Asynchronous JavaScript And XML):异步JavaScript和XML,即使用JavaScript语句与服务器进行异步交互,传输的数据为XML(也可 ...

  6. Django学习笔记之Ajax与文件上传

      Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...

  7. 7 款基于 JavaScript/AJAX 的文件上传插件

    本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 1.  jQuer ...

  8. ajax提交表单、ajax实现文件上传

    ajax提交表单.ajax实现文件上传,有需要的朋友可以参考下. 方式一:利用from表单的targer属性 + 隐藏的iframe 达到类似效果, 支持提交含有文件和普通数据的复杂表单 方式二:使用 ...

  9. python django + js 使用ajax进行文件上传并获取上传进度案例

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 使用 key 登录时分开记录操作历史记录

    线上服务器一般都是配置 key 登录,一个账号可以多个工作人员连接,操作命令历史却全部记录在一个文件中,当然后查看某条命令是谁执行的时候就不好查了.这时候我们就可以通过配置 histroy 相关环境变 ...

  2. 利用 Excel 写 C51 的宏定义

    利用 Excel 写 C51 的宏定义 填好占空比,自动生成宏. #define LIGHT_LEVEL_00 0xFF #define LIGHT_LEVEL_10 0xE5 #define LIG ...

  3. linux系统无法挂载U盘

    插上U盘 [ 2407.650440] usb 1-3.3: new high speed USB device number 7 using s5p-ehci [ 2407.887332] usb ...

  4. Python学习之变量的作用域

    学习地址:http://www.jianshu.com/p/17a9d8584530 1.变量作用域LEGB 1.1变量的作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空 ...

  5. 1127 ZigZagging on a Tree

    题意:中序序列+后序序列构建二叉树,之字形输出其层序序列. 思路:在结点的数据域中额外增加一个layer表示结点所在的层次,并定义vector<int> zigzag[maxn]存放最终结 ...

  6. 实战MvcPager(PagerOptions自定义样式&同、异步)

    ASP.NET MVC下的分页控件MvcPager用起来简直太嗨呸了,两句代码实现一个分页,而且需要改变样式的时候直接构造PagerOptions类 实战无需多说,拿来用之即可.个人觉得对性能影响不大 ...

  7. Git第三方仓库安装方式(IUS)

    1.安装使用里面说的自动化安装脚本 curl https://setup.ius.io | sh 2.然后可以看到 git2u相关内容 yum search git 3.执行安装,并查看下版本 yum ...

  8. 使用CallableStatement接口调用存储过程

    直接上下代码: package com.learn.jdbc.chap07; import java.sql.CallableStatement; import java.sql.Connection ...

  9. Jquery获取EasyUI时间控件的值

    jquery easyui日期控件中,在页面里用JS拿到设置的日期值的方法 jquery easyui 日期框 有这样的一个日期文本框: <input type=" value=&qu ...

  10. leetcode717

    class Solution { public: bool isOneBitCharacter(vector<int>& bits) { int len = bits.size() ...