ajax实现上传文件

简介: 1.html部分 上传 2.js中利用ajax产生表单并发送表单 function UpladFile(fileUploadId, taskid) { var fileObj = document.
 

1.html部分

<input style="width: 280px" type="file" name="upLoadProjectPlan" id="upLoadProjectPlan" 
     value="<%=taskAppend.getTaskAllocationDoc()%>"/>

 <a style="float: right;  margin-right: 40px" class="button" href="javascript:void(0)"
  onclick="UpladFile('upLoadProjectPlan', '<%=task.getTaskid() %>')"><span>上传</span></a>

2.js中利用ajax产生表单并发送表单

function UpladFile(fileUploadId, taskid) {

         var fileObj = document.getElementById(fileUploadId).files[0]; // 获取文件对象

         var FileController = "updateWorkAction!fileUpload"; // 接收上传文件的后台处理程序地址 

         // FormData 对象

         var form = new FormData();

         //form.append("author", "hooyes");                        // 可以增加表单数据
         form.append("taskid", taskid);
         form.append("file", fileObj);                           // 文件对象

         // XMLHttpRequest 对象

         var xhr = new XMLHttpRequest();

         xhr.open("post", FileController, true);

         xhr.onload = function () {
             location.reload(true);   
             alert("上传完成!");

         };

         xhr.send(form);
    }

3.Action部分

public class UpdateWorkAction extends ActionSupport{
    private DistributeDao distributeDao;
    private String taskid;
    private List<File>    file; // 上传的文件
    private List<String> fileFileName; // 文件名称
    private List<String> fileContentType; // 文件类型
    
    public DistributeDao getDistributeDao() {
        return distributeDao;
    }

    public void setDistributeDao(DistributeDao distributeDao) {
        this.distributeDao = distributeDao;
    }

    public List<File> getFile() {
        return file;
    }

    public void setFile(List<File> file) {
        this.file = file;
    }

    public List<String> getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(List<String> fileFileName) {
        this.fileFileName = fileFileName;
    }

    public List<String> getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(List<String> fileContentType) {
        this.fileContentType = fileContentType;
    }

    private void init() throws UnsupportedEncodingException{
        ServletActionContext.getRequest().setCharacterEncoding("UTF-8");
        ServletContext context = ServletActionContext.getServletContext();  
    }
    
    public String fileUpload() throws Exception{
        init();
        // 取得需要上传的文件数组
        List<File> files = getFile();
        if (files != null && files.size() > 0) {
            for (int i = 0; i < files.size(); i++) {
                FileOutputStream fos = new FileOutputStream(getSavePath() +
                           "\\" + getFileFileName().get(i)); FileInputStream fis = new FileInputStream(files.get(i)); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } fis.close(); fos.close(); } TaskAppend taskAppend = distributeDao.findLeaderMsg(Integer.parseInt(taskid)); taskAppend.setTaskAllocationDoc(getFileFileName().get(0)); distributeDao.updateTaskAppend(taskAppend); } return "fileUpload"; } public String getTaskid() { return taskid; } public void setTaskid(String taskid) { this.taskid = taskid; } }

 

目录
相关文章
|
Web App开发 JavaScript 前端开发
前端接收数据流实现图片预览效果--ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
本文为转载文章 原文链接:https://www.cnblogs.com/cdemo/p/5225848.html 首先要谢谢这位大神的无私贡献!解决了我的问题也完美表达了我当时的心路历程 ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践 写在前面 :从提出需求到完美的解决问题,实现过程是曲折的。
7931 0
|
9月前
|
域名解析 JSON 前端开发
漏刻有时数据可视化ajax访问静态json文件使用POST方法返回405 (Method Not Allowed)的解决方案
漏刻有时数据可视化ajax访问静态json文件使用POST方法返回405 (Method Not Allowed)的解决方案
109 0
|
前端开发
Ajax模板文件
Ajax模板文件
50 0
|
开发框架 移动开发 前端开发
ASP.NET MVC中使用jQuery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径
ASP.NET MVC中使用jQuery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径
249 0
|
存储 前端开发 JavaScript
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
从网页界面(前端)上传文件到服务器(后端)
416 0
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
|
前端开发 JavaScript
文件上传 之 ajax 请求
步骤简单思路清晰
1149 0
|
JavaScript 前端开发 Python
Django中ajax技术和form表单两种方式向后端提交文件
一、Form表单方式提交: form表单提交文件或者图像时需要对form中的属性进行如下设置: 1、method="post" //提交方式 post 2、enctype="multipart/form-data" //不对字符编码。
1906 0
|
前端开发 JavaScript 监控
ajax上传文件显示进度
ajax上传文件显示进度的操作,文章后有演示地址,以及封装成vue的插件
3069 0
|
Web App开发 前端开发 JavaScript
springmvc+ajax文件上传
环境:JDK6以上,这里我是用JDK8,mysql57,maven项目 框架环境:spring+springmvc+mybaits或spring+springmvc+mybatis plus  前端代码如下: DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.
1546 0
|
Web App开发 前端开发 Java