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. .NET系统框架

    本书是一本讲解.NET技术的书籍,目标读者群也是在.NET框架(.NET Framework)下进行开发的程序员,因此我们无法回避的问题就是:什么是.NET框架?它包含了哪些内容?为开发程序提供了哪些 ...

  2. 封装Socket.BeginReceive/EndReceive以支持Timeout

    Socket .NET中的Socket类提供了网络通信常用的方法,分别提供了同步和异步两个版本,其中异步的实现是基于APM异步模式实现,即BeginXXX/EndXXX的方式.异步方法由于其非阻塞的特 ...

  3. Stratix IV内嵌DPA电路的基本结构

    StratixIV内嵌DPA电路的基本结构 Altera DPA电路特点如下. 可以放松高速接口对时钟到数据通道和数据通道之间对Skew的严格要求. 最高支持1.6Gbit/s应用. 专用硬件DPA ...

  4. appium 中swipe()方法向左滑动时

    应该在UI Automator Viewer中读取到的例如ImageView [180,600][900,1320],如果要左滑,代码中应该是写为driver.swipe(900,1320,180,6 ...

  5. java代码逆序输出数字

    总结:请告诉我更好的方法~~~总觉得不好. package com.badu; import java.util.Scanner; //逆序输出数字: // class fa { public sta ...

  6. 源码编译安装ceph

    标签(空格分隔): ceph,ceph安装,ceph运维 centos7系统,aarch64架构下安装最新版本的ceph(13.0.0),x86架构的环境无需修改脚本即可. 一,物理环境: 内核版本: ...

  7. python开发进程:共享数据&进程池

    一,共享数据 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合 通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求, 还可以扩展 ...

  8. IntelliJ IDEA 安装 Julia 插件

    打开 IntelliJ IDEA 点击 Configure 选择 Plugins 然后点击 Browse repositories 搜索 Julia,然后点击 Install 进行安装 安装完重启一下 ...

  9. ndnarry矩阵处理

    ndarray的矩阵运算 数组是编程中的概念,矩阵.矢量是数学概念. 在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义! 1. 矢量运算:相同大小的数组间运算应用在元素上 示例代码(1): ...

  10. Maven+Mybatis+Spring+SpringMVC实现分页查询

    转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...