zoukankan      html  css  js  c++  java
  • ajax实现上传文件

     

    1.html部分

    <input style=" 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; } }
  • 相关阅读:
    spring 源码解析(三)
    spring 源码解析(三)
    spring 源码解析(三)
    spring 源码解析(三) 容器的实现
    spring 源码解析(二) 3.修改编译生成,生成自定义版本。
    spring 源码解析(二) 1.开发环境,环境的搭建。
    思维-J
    思维-Ayoub's function
    图-D
    思维-Codeforces 1294D
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/4698467.html
Copyright © 2011-2022 走看看