formData+input type=file 上传文件,浏览器显示file参数为[object fileList]形式,而不是(binary),后台接收为null

导入车辆白名单excel表格,直接使用 <input type="file"/> 然后将拿到的数据提交给后台,结果后台接收为空,且浏览器显示file:[object fileList],正确应该是ile:(binary);

html代码

    <input  type="file" @change="getInput()" id="whiteFile" accept=".xls"/>

获取文件代码

 getInput(){
     //this.filelist = document.getElementById("whiteFile").files 浏览器显示数据格式为 
     //[object fileList]
     this.filelist = document.getElementById("whiteFile").files[0];
     //这里files后面一定要加[0],否则传送的文件格式就是[object,fileList],后台接收不到
     this.fileName = this.filelist.name;
},

发送请求代码

async importData(){
      var formData = new FormData(); //注意这里必须使用 FormData 对象
      formData.append("file",this.filelist);//必须使用append方法来添加key 和 value
      //如果是多个文件使用循环一个一个的添加,console.log(formData)无法查看添加的数据,需要用 
      //formData特定方法来获取,FormData.get,FormData.getAll,FormData.keys
      if (formData.getAll("file").length != 0) { //如果formData中存在文件 、发送请求
        let [err, res] = await this.$common.awaitWrap(
          this.$service.$ajax("/device/signo/importCarWhiteList",formData)
        );
        if (err) return;
        if(res.code==1000){
             this.$message({
              message: "导入成功!",
              type: "success",
            });
        }
      }
    },

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第2章(/ch02/) Sample_02_01/Default.aspx 第一个Web窗体页面 Sample_02_02/DataBindPage.aspx 页面的数据绑定语法 Sample_02_02/Default.aspx 代码呈现块和代码声明块 Sample_02_02/HiddenPage.aspx 代码隐藏页面 Sample_02_02/InlinePage.aspx 内联代码页面 Sample_02_02/ObjectPage.aspx 创建页面中的对象 Sample_02_03/Default.aspx 页面的生命周期 第3章(/ch03/) Sample_03_01/ClientInfo.aspx 获取客户端信息 Sample_03_01/Dir.aspx 目的 Sample_03_01/DirPage.aspx 重定向的目的页面 Sample_03_01/DirParam.aspx 接收参数的页面 Sample_03_01/FileList.aspx 文件列表 Sample_03_01/List.aspx 列表控件 Sample_03_01/OutImage.aspx 输出图像 Sample_03_01/OutText.aspx 输出文本 Sample_03_01/Src.aspx 源 Sample_03_01/SrcPage.aspx 重定向的源页面 Sample_03_01/SrcParam.aspx 传递参数的页面 Sample_03_02/Dir.aspx 目的页面 Sample_03_02/Error.aspx 处理页面的错误 Sample_03_02/HtmlLUrlCode.aspx HTML编码 Sample_03_02/MappathUrl.aspx 映射虚拟路径 Sample_03_02/Src.aspx 源页面 Sample_03_03/GetData.aspx 获取数据 Sample_03_03/PageData.aspx 缓存页面数据 Sample_03_03/UserData.aspx 缓存用户数据 Sample_03_03/WebData.aspx 缓存网站数据 Sample_03_04/Default.aspx 读取配置文件信息 Sample_03_05/Default.aspx 测试页面事件 Sample_03_05/GlobalClick.aspx 页面的事件 第4章(/ch04/) Sample_04_02/Connect.aspx 链接数据库 Sample_04_02/DataSetToXML.aspx 数据集转换为XML Sample_04_02/FillData.aspx 填充数据集 Sample_04_02/FilterData.aspx 过滤数据 Sample_04_02/OperateData.aspx 操作数据 Sample_04_02/Procedure.aspx 调用存储过程 Sample_04_02/ReaderData.aspx 读取数据 第5章(/ch05/) Sample_05_01/ComplexBinder.aspx 复杂数据绑定 Sample_05_01/SimpleBinder.aspx 简单数据绑定 Sample_05_02/AccessDataSourceCtl.aspx Access数据源控件 Sample_05_02/ObjectDataSourceCtl.aspx 对象数据源控件 Sample_05_02/SitemapDataSourceCtl.aspx 站点地图数据源控件 Sample_05_02/SqlDataSoruceCtl.aspx Sql数据源控件 Sample_05_02/XmlDataSourceCtl.aspx XML数据源控件 Sample_05_03/ButtonKey.aspx DataList控件中使用按钮 Sample_05_03/DatalistCtl.aspx DataList控件 Sample_05_03/dlClick.aspx DataList控件的事件 Sample_05_03/DLColumn.aspx DataList控件的列 Sample_05_03/RepeaterCtl.aspx Repeater控件 Sample_05_04/Click.aspx 控件的事件 Sample_05_04/Cloumn.aspx 控件的列 Sample_05_04/Edit.aspx 编辑数据 Sample_05_04/Field.aspx 控件的域 Sample_05_04/Paging.aspx 分页数据 Sample_05_04/Sort.aspx 排序数据 Sample_05_05/GridDetailsView.aspx 主/从数据操作 第6章(/ch06/) Sample_06_01/Download.aspx 下载文件 Sample_06_01/File.aspx 浏览文件 Sample_06_01/FiletoDatabase.aspx 上载文件到数据库 Sample_06_01/FiletoDisk.aspx 上载文件到硬盘 Sample_06_02/CutImage.aspx 创建缩略图 Sample_06_02/Default.aspx 显示图片 Sample_06_02/DrawString.aspx 绘制图片水印 Sample_06_02/OutImage.aspx 显示图片 第7章(/Web2ASPNET2/) OperateXmlDatabase/DataCommon.cs 操作XML数据库的公用组件 OperateXmlDatabase/XmlDatabase.cs 操作XML数据库的组件 OperateSqlServer/DataCommon.cs 操作SQL数据库的公用组件 OperateSqlServer/OperateDatabase.cs 操作SQL数据库的公用组件 CommonOperation/CommonOperation.cs 系统通用操作 CommonOperation/CustomCache.cs 系统缓存 UserCommonOperation/UserCommonOperation.cs 操作用户信息的组件 第8章(/Web2ASPNET2/) RSS/Admin/AddRole.aspx 添加角色 RSS/Admin/AddUser.aspx 添加用户 RSS/Admin/RoleManage.aspx 角色管理 RSS/Admin/UpdateRole.aspx 修改角色 RSS/Admin/UpdateUser.aspx 修改用户信息 RSS/Admin/UpdateUserPwd.aspx 修改用户密码 RSS/Admin/UserManage.aspx 用户管理 RSS/Portal/AddUrl.aspx 收藏链接 RSS/Portal/Index.aspx 后台主页面 RSS/Portal/LeftUrl.aspx 左边链接面板 RSS/Portal/SampleRSS.aspx 创建简单RSS页面 RSS/Portal/UpdateUrl.aspx 修改链接 RSS/Portal/UrlManage.aspx 链接管理 RSS/Portal/ViewRSS.aspx 查看RSS页面内容 RSS/UserControl/Header.aspx 系统页面的头部分 RSS/Default.aspx 系统主页面 第9章(/Web2ASPNET2/) Blog/Admin/AddRole.aspx 添加角色 Blog/Admin/AddUser.aspx 添加用户 Blog/Admin/RoleManage.aspx 角色管理 Blog/Admin/UpdateRole.aspx 修改角色 Blog/Admin/UpdateUser.aspx 修改用户信息 Blog/Admin/UpdateUserPwd.aspx 修改用户密码 Blog/Admin/UserManage.aspx 用户管理 Blog/Index/Index.aspx 前台主页面 Blog/Index/ShowArticle.aspx 显示文章 Blog/Portal/AddArticle.aspx 发布文章 Blog/Portal/AddCatalog.aspx 添加种类 Blog/Portal/AddUrl.aspx 发布链接 Blog/Portal/ArticleCommentManage.aspx 文章评论管理 Blog/Portal/ArticleManage.aspx 文章管理 Blog/Portal/ArticleSourceManage.aspx 文章访问来源管理 Blog/Portal/CatalogManage.aspx 种类管理 Blog/Portal/Desktop.aspx 后台桌面页面 Blog/Portal/Index.aspx 后台主页面 Blog/Portal/OperateTree.aspx 操作树 Blog/Portal/ShowArticle.aspx 显示文章 Blog/Portal/UpdateArticle.aspx 修改文章 Blog/Portal/UpdateCatalog.aspx 修改种类 Blog/Portal/UpdateUrl.aspx 修改链接 Blog/Portal/UrlManage.aspx 链接管理 Blog/Portal/UserLogin.aspx 用户登录 Blog/Portal/UserLogOff.aspx 退出登录 Blog/Portal/ViewArticle.aspx 查看文章 Blog/UserControl/Header.aspx 系统页面的头部分 Blog/Default.aspx 系统主页面 第10章(/Web2ASPNET2/) WebTags/Admin/AddRole.aspx 添加角色 WebTags/Admin/AddUser.aspx 添加用户 WebTags/Admin/RoleManage.aspx 角色管理 WebTags/Admin/UpdateRole.aspx 修改角色 WebTags/Admin/UpdateUser.aspx 修改用户信息 WebTags/Admin/UpdateUserPwd.aspx 修改用户密码 WebTags/Admin/UserManage.aspx 用户管理 WebTags/Portal/AddArticle.aspx 收藏文章 WebTags/Portal/AddCatalog.aspx 添加标签种类 WebTags/Portal/AddTag.aspx 添加标签 WebTags/Portal/AddUrl.aspx 添加链接 WebTags/Portal/ArticleManage.aspx 文章管理 WebTags/Portal/CatalogManage.aspx 标签种类管理 WebTags/Portal/Desktop.aspx 后台桌面页面 WebTags/Portal/Index.aspx 后台主页面 WebTags/Portal/MoveTag.aspx 移动标签 WebTags/Portal/OperateTree.aspx 操作树 WebTags/Portal/ShowTags.aspx 显示标签 WebTags/Portal/TagManage.aspx 标签管理 WebTags/Portal/UpdateArticle.aspx 修改文章 WebTags/Portal/UpdateCatalog.aspx 修改标签种类 WebTags/Portal/UpdateTag.aspx 修改标签 WebTags/Portal/UpdateUrl.aspx 修改链接 WebTags/Portal/UrlManage.aspx 链接管理 WebTags/Portal/UserLogin.aspx 用户登录 WebTags/Portal/UserLogOff.aspx 退出登录 WebTags/Portal/ViewArticle.aspx 查看文章 WebTags/Portal/ViewTag.aspx 查看标签 WebTags/UserControl/Header.aspx 系统页面的头部分 WebTags/Default.aspx 系统主页面 第11章(/Web2ASPNET2/) WebStore/Admin/AddRole.aspx 添加角色 WebStore/Admin/AddUser.aspx 添加用户 WebStore/Admin/RoleManage.aspx 角色管理 WebStore/Admin/UpdateRole.aspx 更新角色 WebStore/Admin/UpdateUser.aspx 更新用户 WebStore/Admin/UpdateUserPwd.aspx 更新用户密码 WebStore/Admin/UserManage.aspx 用户管理 WebStore/Portal/AddDirectory.aspx 添加目录 WebStore/Portal/AddFile.aspx 上载单个文件 WebStore/Portal/AddMutliFile.aspx 同时上载多个文件 WebStore/Portal/Desktop.aspx 后台管理桌面 WebStore/Portal/DirectoryManage.aspx 存储系统的目录管理 WebStore/Portal/Index.aspx 后台主页面 WebStore/Portal/OperateTree.aspx 目录操作树 WebStore/Portal/ShowFile.aspx 显示文件 WebStore/Portal/ShowFileDataByWebService.aspx 调用Web服务显示文件 WebStore/Portal/ShowFileDataByWebServiceUrl.aspx 根据URL调用文件Web服务 WebStore/Portal/UpdateDirectory.aspx 修改目录 WebStore/Portal/UpdateFile.aspx 修改文件 WebStore/Portal/UserLogin.aspx 用户登录 WebStore/Portal/UserLogOff.aspx 用户退出登录 WebStore/Portal/ViewDirectory.aspx 以树型结构查看文件系统 WebStore/Portal/ViewDirectoryByList.aspx 以列表形式查看文件系统 WebStore/Portal/ViewFile.aspx 查看文件内容 WebStore/UserControl/Header.aspx 系统页面的头部分 WebStore/Default.aspx 系统主页面 第12章(/Web2ASPNET2/) XMLBBS/Admin/AddRole.aspx 添加角色 XMLBBS/Admin/AddUser.aspx 添加用户 XMLBBS/Admin/RoleManage.aspx 角色管理 XMLBBS/Admin/UpdateRole.aspx 修改角色 XMLBBS/Admin/UpdateUser.aspx 修改用户信息 XMLBBS/Admin/UpdateUserPwd.aspx 修改用户密码 XMLBBS/Admin/UserManage.aspx 用户管理 XMLBBS/Portal/Message/AddMessage.aspx 发送消息 XMLBBS/Portal/Message/BrowseMessage.aspx 浏览消息 XMLBBS/Portal/Message/FollowMessage.aspx 跟踪消息 XMLBBS/Portal/Message/SendMessageBox.aspx 发送消息 XMLBBS/Portal/Message/ShieldMessage.aspx 屏蔽用户的消息 XMLBBS/Portal/Message/ViewMessage.aspx 查看消息 XMLBBS/Portal/Search/SearchByDate.aspx 按日期搜索邮件 XMLBBS/Portal/Search/SearchByKey.aspx 按关键字搜索邮件 XMLBBS/Portal/Search/SearchByUser.aspx 按用户搜索邮件 XMLBBS/Portal/Stat/AnswerHotTitle.aspx 热门回复排行 XMLBBS/Portal/Stat/StatOnlineUser.aspx 在线用户统计 XMLBBS/Portal/Stat/StatTitleDay.aspx 当日帖子统计 XMLBBS/Portal/Stat/StatTitleReplyTotal.aspx 所有回复帖子统计 XMLBBS/Portal/Stat/StatTitleTotal.aspx 热门主题统计 XMLBBS/Portal/Stat/StatTotalUser.aspx 按用户统计主题 XMLBBS/Portal/Stat/ViewHotTitle.aspx 热门主题统计 XMLBBS/Portal/AddBoard.aspx 添加新的版面 XMLBBS/Portal/AddReply.aspx 回复帖子 XMLBBS/Portal/AddTitle.aspx 发布主题 XMLBBS/Portal/BoardManage.aspx 版面管理 XMLBBS/Portal/Desktop.aspx 后台管理平台页面 XMLBBS/Portal/ErrorPage.aspx 错误处理页面 XMLBBS/Portal/GuestIndex.aspx 游客登录页面 XMLBBS/Portal/GuestOperateTree.aspx 游客的操作树 XMLBBS/Portal/Index.aspx 后台主页面 XMLBBS/Portal/OperateTree.aspx 后台操作树 XMLBBS/Portal/ReplyManage.aspx 回复管理 XMLBBS/Portal/TitleManage.aspx 帖子管理 XMLBBS/Portal/UpdateBoard.aspx 修改版面 XMLBBS/Portal/UpdateTitle.aspx 修改帖子 XMLBBS/Portal/UserLogin.aspx 用户登录 XMLBBS/Portal/UserLogOff.aspx 退出登录 XMLBBS/Portal/ViewBoard.aspx 查看版面 XMLBBS/Portal/ViewReply.aspx 查看回复 XMLBBS/Portal/ViewTitle.aspx 查看贴子 XMLBBS/UserControl/Header.aspx 系统页面的头部分 XMLBBS/Default.aspx 系统主页面 第13章(/Web2ASPNET2/) Sample_13_01/AjaxWebPage.aspx AJAX网页 Sample_13_01/Default.aspx ASP.NET AJAX页面 Sample_13_01/TimerCtrl.aspx 定时器控件 Sample_13_01/WebPageProgress.aspx 显示网页加载进程 ASPNET2AjaxMail/Admin/AddUser.aspx 添加用户 ASPNET2AjaxMail/Admin/SystemConfig.aspx 系统配置 ASPNET2AjaxMail/Admin/UpdateUser.aspx 修改用户信息 ASPNET2AjaxMail/Admin/UpdateUserPwd.aspx 修改用户密码 ASPNET2AjaxMail/Admin/UserManage.aspx 用户管理 ASPNET2AjaxMail/Filter/FilterMail.aspx 过滤邮件 ASPNET2AjaxMail/Filter/FilterManage.aspx 过滤器管理 ASPNET2AjaxMail/Filter/KeyFilter.aspx 基于关键字的邮件过滤 ASPNET2AjaxMail/Filter/UpdateFilter.aspx 修改邮件过滤器 ASPNET2AjaxMail/Mail/ReaderMail.aspx 阅读邮件 ASPNET2AjaxMail/Mail/SenderMail.aspx 发送邮件 ASPNET2AjaxMail/Mail/ViewMail.aspx 查看邮件 ASPNET2AjaxMail/Portal/AddGroup.aspx 添加组 ASPNET2AjaxMail/Portal/AddLinkman.aspx 添加联系人 ASPNET2AjaxMail/Portal/AddTag.aspx 添加邮件标签 ASPNET2AjaxMail/Portal/Desktop.aspx 后台桌面页面 ASPNET2AjaxMail/Portal/GroupLinkmanManage.aspx 组内联系人管理 ASPNET2AjaxMail/Portal/GroupManage.aspx 组管理 ASPNET2AjaxMail/Portal/Index.aspx 后台主页面 ASPNET2AjaxMail/Portal/MoveLinkman.aspx 移动联系人 ASPNET2AjaxMail/Portal/OperateTree.aspx 操作树 ASPNET2AjaxMail/Portal/SearchLinkman.aspx 搜索联系人 ASPNET2AjaxMail/Portal/TagManage.aspx 邮件标签管理 ASPNET2AjaxMail/Portal/UpdateGroup.aspx 修改组 ASPNET2AjaxMail/Portal/UpdateLinkman.aspx 修改联系人 ASPNET2AjaxMail/Portal/UpdateTag.aspx 修改邮件标签 ASPNET2AjaxMail/Portal/UserLogin.aspx 用户登录 ASPNET2AjaxMail/Portal/UserLogOff.aspx 退出登录 ASPNET2AjaxMail/UserControl/Header.aspx 系统页面的头部分 ASPNET2AjaxMail/Default.aspx 系统主页面 第14章(/Web2ASPNET2/) Setup/Component/SetupSystem.cs 处理系统安装 Setup/Component/UserContrlBase.cs 用户控件基类 Setup/UserControls/DatabaseUC.cs 安装数据库用户控件 Setup/UserControls/FinishUC.cs 安装完成用户控件 Setup/UserControls/PrepareUC.cs 准备安装用户控件 Setup/UserControls/StatusUC.cs 安装状态用户控件 Setup/UserControls/WebSetupUC.cs 安装Web程序的用户控件 Setup/mailForm.cs 安装系统主窗口 Setup/Program.cs 系统起始文件 安装:把源码拷贝到虚拟目录下,并在Microsoft SQL Server 2005中还原或附加数据库WEB2ASPNETDB即可。 注意:系统的管理员帐户和密码均为admin。
package com.hexiang.utils; import java.io.*; import java.util.*; import java.util.zip.Adler32; import java.util.zip.CheckedInputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipUtils { private static final int BUFFER = 8192; private static void log(String msg){ System.out.println (msg); } private static String getFileName(String filePath){ int index = filePath.indexOf("."); return filePath.substring(0, index); } @SuppressWarnings("unused") private static String getRootPath(String filePath){ int index = filePath.indexOf("."); return filePath.substring(0, index); } public static void zip(String sourceFilePath){ File fileDir = new File(sourceFilePath); if(fileDir.exists()){ log(fileDir.getPath()+" Starting Zip ..."); long startTime = System.currentTimeMillis(); doZip(fileDir); long endTime = System.currentTimeMillis(); long costTime = endTime - startTime; log("Zip Success!"); log("use time -- "+costTime+" millsec!"); }else{ log("can't find the File!"); } } public static void unZip(String zipFilePath){ File fileDir = new File(zipFilePath); if(fileDir.exists()){ log(fileDir.getPath()+" Starting UnZip ..."); long startTime = System.currentTimeMillis(); doUnZip(fileDir); long endTime = System.currentTimeMillis(); long costTime = endTime - startTime; log("UnZip Success!"); log("use time -- "+costTime+" millsec!"); }else{ log("can't find the File!"); } } public static void doZip(File file){ List<File> fileList = new ArrayList<File>(); List<File> allFiles = (ArrayList<File>)searchFiles(file.getPath(), fileList); Object[] fileArray = allFiles.toArray(); BufferedInputStream in = null; FileInputStream fis = null; ZipOutputStream zos = null; FileOutputStream fos = null; try { fos = new FileOutputStream(file.getParent()+File.separator+file.getName()+".zip"); zos = new ZipOutputStream(new BufferedOutputStream(fos, BUFFER)); zos.setLevel(9); byte[] data = new byte [BUFFER]; for (int i = 0; i<fileArray.length; i++){ // 设置压缩文件入口entry,为被读取的文件创建压缩条目 File tempFile = new File(fileArray[i].toString()); String rootStr = file.getPath(); String entryStr = null; // entry以相对路径的形式设置。以文件夹C:\temp例如temp\test.doc或者test.xls 如果设置不当,会出现拒绝访问等错误 // 分别处理单个文件/目录的entry if(rootStr.equals(tempFile.getPath())){ entryStr = tempFile.getName(); }else{ entryStr = tempFile.getPath().substring((rootStr+File.separator).length()); } log(entryStr); ZipEntry entry = new ZipEntry(entryStr); zos.putNextEntry(entry); fis = new FileInputStream(tempFile); in = new BufferedInputStream(fis, BUFFER); int count; while((count = in.read(data, 0, BUFFER)) != -1){ zos.write(data, 0, count); } } } catch (Exception ex) { ex.printStackTrace(); }finally{ try{ if(in != null){ in.close(); } if(zos != null){ zos.close(); } }catch (Exception e) { e.printStackTrace(); } } } public static void doUnZip(File file){ try{ final int BUFFER = 2048; BufferedOutputStream dest = null; FileInputStream fis = new FileInputStream(file); CheckedInputStream checksum = new CheckedInputStream(fis,new Adler32()); ZipInputStream zis = new ZipInputStream(new BufferedInputStream(checksum)); ZipEntry entry; while((entry = zis.getNextEntry()) != null){ log("Extracting: "+entry); int count; byte[] data = new byte[BUFFER]; log("unzip to "+getFileName(file.getPath())); FileOutputStream fos = new FileOutputStream(getFileName(file.getPath())+File.separator+newDir(file, entry.getName())); dest = new BufferedOutputStream(fos, BUFFER); while((count = zis.read(data, 0, BUFFER)) != -1){ dest.write(data, 0, count); } dest.flush(); dest.close(); } zis.close(); System.out.println("Checksum: "+checksum.getChecksum().getValue()); }catch(Exception e){ e.printStackTrace(); } } public static List<File> searchFiles(String sourceFilePath, List<File> fileList){ File fileDir = new File(sourceFilePath); if(fileDir.isDirectory()){ File[] subfiles = fileDir.listFiles(); for(int i = 0; i<subfiles.length; i++){ searchFiles(subfiles[i].getPath(),fileList); } }else{ fileList.add(fileDir); } return fileList; } @SuppressWarnings("static-access") private static String newDir(File file,String entryName) { String rootDir=getFileName(file.getPath()); log("root:"+rootDir); int index = entryName.lastIndexOf("\\"); String dirStr=new File(rootDir).getParent(); log(dirStr); if (index != -1) { String path=entryName.substring(0, index); log("new Dir:"+rootDir+file.separator+path); new File(rootDir+file.separator+path).mkdirs(); log("entry:"+entryName.substring(0, index)); } else{ new File(rootDir).mkdirs(); log("entry:"+entryName); } return entryName; } }
可以使用以下代码实现 jQuery 动态添加 input type=file 文件上传域并配合 ajax 上传文件HTML 代码: ```html <div id="file-list"></div> <button id="add-file">添加文件</button> ``` JavaScript 代码: ```javascript $(function() { var fileList = $('#file-list'); var addButton = $('#add-file'); addButton.on('click', function() { var fileInput = $('<input type="file" name="file">'); var removeButton = $('<button>删除</button>'); var listItem = $('<div></div>').append(fileInput).append(removeButton); fileList.append(listItem); removeButton.on('click', function() { listItem.remove(); }); fileInput.on('change', function() { var file = fileInput[0].files[0]; if (file) { var formData = new FormData(); formData.append('file', file); $.ajax({ url: '/upload', type: 'POST', data: formData, processData: false, contentType: false, success: function(data) { console.log('上传成功'); } }); } }); }); }); ``` 具体实现步骤如下: 1. 创建一个包含文件列表的容器和添加文件按钮。 2. 给添加文件按钮绑定一个点击事件,动态创建一个 input type=file 文件上传域和删除按钮,将它们添加到文件列表容器中。 3. 给删除按钮绑定一个点击事件,当点击时将该文件上传域从文件列表容器中删除。 4. 给文件上传域绑定一个 change 事件,当选择了文件时,创建一个 FormData 对象,将选中的文件添加到其中,然后通过 ajax 发送到服务器。 5. 在 ajax 的 success 回调函数中处理上传成功后的逻辑。 注意,要设置 processData 和 contentType 为 false,这样 jQuery 就会将 FormData 对象中的数据直接发送到服务器,而不是将其转换为字符串发送。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值