上传文件功能-1

效果:

代码:

JSP

<li class="item db">
                    <span class="tt">pos文档:</span>
                      <div class="file-line">
                      <form id="dataform" action="${ctx}/uploadFileSftp" enctype="multipart/form-data" method="post">
                        <input  type="text" id="viewfile" onmouseout="document.getElementById(‘file‘).style.display=‘none‘;" class="inputstyle" />
                        <label for="unload" onmouseover="document.getElementById(‘file‘).style.display=‘block‘;" class="file1"></label>
                        <input type="file" name="file" onchange="document.getElementById(‘viewfile‘).value=this.value;this.style.display=‘none‘;autoUploadFile()" class="file" id="file" />
                     </form>
                    </div>
                </li>

JS:

function autoUploadFile(){
    if(uploadFileCheck()){
        $(‘#dataform‘).ajaxSubmit({
            dataType: ‘json‘,
            success: function(data){
                if(data.error != null && typeof(data.error) != "undefined"){
                    alert(data.error);
                }else{
                    filePaths = data.info;
                    alert(data.msg);
                };
            },
            error: function(status, err){
                console.info(status+","+err);
                alert("status: "+status+" err: "+err);
            }
        })
    }
} 

function uploadFileCheck(){
     var upload_file = $(‘#viewfile‘).val();
     var fileTypes = new Array("pos","txt");
     var fileTypeFlag = "0";

     if(upload_file != ""){
         var newFileName = upload_file.split(‘.‘);
         newFileName = newFileName[newFileName.length-1];
         for(var i=0;i<fileTypes.length;i++){
             if(fileTypes[i] == newFileName){
                 fileTypeFlag = "1";
             }
         };
         if(fileTypeFlag == "0"){
             alert("上传文件必须是pos、txt格式滴");
             return false;
         };
         return true;
     }else{
         alert("请上传文件!");
         return false;
     }
}

JAVA

package com.tydic.unicom.res.web.busi.controller.resCard;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONObject;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.SftpException;
import com.tydic.unicom.res.web.busi.controller.config.GetToken;
import com.tydic.unicom.res.web.busi.controller.config.SFTPChannelUtil;

@Controller
public class FileUploadSftpController {

    private static Logger logger = Logger.getLogger(FileUploadSftpController.class); 

    @RequestMapping(value="/uploadFileSftp",method=RequestMethod.POST)
    @ResponseBody
    public void uploadFileSftp(MultipartFile file,HttpServletRequest request,HttpServletResponse response,HttpSession session) throws IOException, JSchException, SftpException{
        JSONObject jsonOut = new JSONObject();
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        String filePath = null;
        if(request instanceof MultipartHttpServletRequest){
            if(file.isEmpty()){
                logger.info("文件未上传");
                jsonOut.put("error", "上传文件内容为空");
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().print(jsonOut.toString());
            }else{
                logger.info("上传文件内容信息:"+readFile(file.getInputStream()));
                if(isValid(readFile(file.getInputStream()))){
                    SFTPChannelUtil channel = new SFTPChannelUtil();
                    ChannelSftp channelSftp = channel.getChannel(60000);
                    filePath = GetToken.get("SFTP_REQ_LOC")+"/"+file.getOriginalFilename();
                    logger.info("文件上传路径:"+filePath);
                    channelSftp.put(file.getInputStream(), filePath, ChannelSftp.OVERWRITE);

//                  session.setAttribute("filePath", filePath);
//                  request.setAttribute("filePath", filePath);

                    jsonOut.put("msg", "文件上传成功!");
                    jsonOut.put("info", filePath);
                    response.setContentType("text/html;charset=utf-8");
                    response.getWriter().print(jsonOut.toString());
                }else{
                    logger.info("文件上传失败");
                    jsonOut.put("msg", "文件格式不正确,上传失败!");
                    response.setContentType("text/html;charset=utf-8");
                    response.getWriter().print(jsonOut.toString());
                }
            }
        }
    }

    private static String readFile(InputStream in) throws IOException{
        String number = "";
        InputStreamReader reader = new InputStreamReader(in);
        BufferedReader buffer = new BufferedReader(reader);
        String tmp = null;
        while((tmp = buffer.readLine()) != null){
            number += tmp.replaceAll(" ", "");
        }
        return number;
    }

    private static boolean isValid(String str){
        String regex = "^[a-z0-9A-Z]+$";
        return str.matches(regex);
    }
}
获取上传文件位置配置

时间: 2024-10-14 19:03:54

上传文件功能-1的相关文章

上传文件功能

最近项目上的一个上传文件功能,贴出来大家一起分享下,项目是MVC+EF+LigerUI 来做的 <script type="text/javascript" src="/Content/uploadify/jquery.uploadify.min.js"></script><link href="/Content/uploadify/uploadify.css" type="text/css" r

Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次更新已经比较久了^_^! formidable简介 nodejs原生实现上传还是比较麻烦,有兴趣的自已去参考一下网上有网友写的代码 这里选择了formidable,也是githu

转:使用 Nginx Upload Module 实现上传文件功能

普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦.Nginx有一个Upload模块,可以非常简单的实现文件上传功能.此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面.下面和大家具体介绍一下. 一.编译安装Nginx 为了使用Nginx Upload Module,需要编译安装Nginx,将upload module编译进去.upload module的代码可以去Gith

Ajax+Python flask实现上传文件功能

HTML: <div > <input type="file" name="FileUpload" id="FileUpload"> <a class="layui-btn layui-btn-mini" id="btn_uploadimg">上传图片</a> </div> Ajax实现: <script type="text/js

使用ivx实现拖拽上传文件功能的经验总结

在实际案例中经常会使用到上传文件的功能,不过普通的上传文件需要用户再去一层一层查找文件的路径并不是十分的方便,今天给大家讲一种使用拖拽放置容器实现上传文件的方法.1.拖拽放置容器拖拽放置容器位于拓展组件中的特殊功能容器类,我们可以给它添加事件拖拽放置,此事件的动作中我们能获取一个返回值--拖拽文件,在调试记录中打印出来可以看到里面包含文件的名称.大小和类型等信息.不过拖拽放置容器只是把文件拖拽进来,上传到服务器还是要使用文件接口组件.文件接口上传文件动作的回调中会收到文件上传到服务器后的一些信息

Spring Cloud Feign Client 实现MultipartFile上传文件功能

这两天老大突然交给一个任务,就是当用户关注我们的微信号时,我们应该将其微信头像下载下来,然后上传到公司内部的服务器上.如果直接保存微信头像的链接,当用户更换微信头像时,我们的产品在获取用户头像很可能会出现404异常. 由于公司运用的技术栈为spring Cloud(一些Eureka, Feign)进行服务注册和远程调用. 重点来了....但直接使用FeignClient去远程调用注册中心上的上传文件接口,会一直报错. @PostMapping    @ApiOperation(value = "

功能二:上传文件功能的基本实现

使用表单实现文件上传: <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">文件名:</label> <input type="file" name="file" id="file">&

使用ajaxfileupload.js实现上传文件功能

<div class="pictureList"> <div class="pictureItem" id="uploadItem"> <div class="pictureDiv"> <span class="commonSprite LAddWhiteBtn" onclick="triggeruploadPicture()"></

使用Servlet实现上传文件功能

1.servlet只需加上一个注释和用request.getPart来获取文件的值,这是servlet3.0的API 2.表单需要加上一个属性enctype="multipart/form-data" 现在附上代码 表单: <form method="POST" action="upload" enctype="multipart/form-data" > File: <input type="fi