ssh文件上传

来源:互联网 发布:sql删除视图数据 编辑:程序博客网 时间:2024/05/16 14:11

一、准备工作:

先在maven下搭建一个ssh框架:

1、依赖包pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.iflytek</groupId>  <artifactId>mavensshmzyw</artifactId>  <version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><spring.version>4.3.13.RELEASE</spring.version></properties><dependencies><!-- spring begin --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- spring end --><!-- hibernate begin --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.11.Final</version></dependency><!-- hibernate end --><!-- datasource pool begin --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!-- datasource pool end --><!-- servlet.jar jstl-api.jar --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.1</version><scope>provided</scope></dependency><!-- servlet.jar jstl-api.jar end --><!-- jackson begin --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version></dependency><!-- jackson end --><!-- fileupload begin --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!-- fileupload end --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.10</version></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.10</version></dependency></dependencies></project>

2、资源文件夹:

(1、)spring配置文件spring.xml:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"><context:component-scan base-package="com.iflytek"><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller" /></context:component-scan><context:property-placeholder location="classpath:jdbc.properties"/><bean id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.driverClassName}"></property><property name="jdbcUrl" value="${jdbc.url}"></property><property name="user" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="packagesToScan" value="com.iflytek.domain"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${hibernate.dialect}</prop><!-- <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> --><prop key="hibernate.show_sql">${hibernate.show_sql}</prop><prop key="hibernate.format_sql">${hibernate.format_sql}</prop></props></property></bean><!-- 配置声明式事务管理(采用注解的方式) --><bean id="txManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><tx:annotation-driven transaction-manager="txManager" /></beans>

用到的jdbc配置文件jdbc.properties:

jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@172.16.130.35:1521:orcljdbc.username=wtyymmywjdbc.password=wtyymmywhibernate.dialect=org.hibernate.dialect.Oracle10gDialecthibernate.hbm2ddl.auto=createhibernate.show_sql=truehibernate.format_sql=true


(2、)springmvc配置文件springmvc.xml:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"><mvc:annotation-driven /><!-- 静态资源文件不拦截 --><mvc:resources location="/assets/" mapping="/assets/**"></mvc:resources><context:component-scan base-package="com.iflytek.controller"><context:include-filter type="annotation"expression="org.springframework.stereotype.Controller" /></context:component-scan><beanclass="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"><property name="viewResolvers"><list><bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean></list></property><property name="defaultViews"><list><beanclass="org.springframework.web.servlet.view.json.MappingJackson2JsonView" /></list></property></bean><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="utf-8" /><property name="maxUploadSize" value="10485760000" /><property name="maxInMemorySize" value="40960" /></bean></beans>

3、web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:spring.xml</param-value>  </context-param>  <servlet>    <servlet-name>dispatcher</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:springmvc.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>dispatcher</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <filter>    <filter-name>characterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>      <param-name>encoding</param-name>      <param-value>UTF-8</param-value>    </init-param>    <init-param>      <param-name>forceEncoding</param-name>      <param-value>true</param-value>    </init-param>  </filter>  <filter-mapping>    <filter-name>characterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping></web-app>

二、测试:

先在F盘下创建一个zt文件夹。

1、同步上传:

后台:

package com.iflytek.controller;import java.io.File;import java.io.IOException;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;@Controllerpublic class Text {@GetMapping("/test")public String goTest(){   return "test";}@PostMapping("/test")@ResponseBodypublic void upfile(@RequestParam("file1") MultipartFile[]  files,HttpServletRequest req) throws IllegalStateException, IOException{System.out.println(req.getParameter("name"));System.out.println("文件上传");for(int i=0;i<files.length;i++){String path="F:/zt/"+new Date().getTime()+files[i].getOriginalFilename();File newfile=new File(path);files[i].transferTo(newfile);}}}

前台:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form method="post" action="test" enctype="multipart/form-data"><input type="text" name="name"><input type="file" name="file1"><input type="file" name="file1"><input type="submit" value="提交"></form></body></html>

2、异步上传:

前台改为ajax:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript" src="assets/jquery.min.js"></script><script>$(function(){$("form").submit(function(){ var formData = new FormData(); var dt=$("#name").val(); alert(dt); formData.append("name", dt);              formData.append("file1", document.getElementById("file1").files[0]);              formData.append("file1", document.getElementById("file2").files[0]);                $.ajax({                 url: "test",                 type: "POST",                 data: formData,                 /**                 *必须false才会自动加上正确的Content-Type                 */                 contentType: false,                 /**                 * 必须false才会避开jQuery对 formdata 的默认处理                 * XMLHttpRequest会对 formdata 进行正确的处理                 */                 processData: false,                 success: function (data) {                                      }             });return false;})     })</script></head><body><form method="post"  ><input type="text" name="name" id="name"><input type="file" name="file1" id="file1"><input type="file" name="file1" id="file2"><input type="submit" value="提交"></form></body></html>

注:以上是上传至自定义的目录,现在如果上传到项目中,如放在assets下的img文件中。只需把后台的path改为:

String path="D:/javaweb"+req.getContextPath()+"/src/main/webapp/assets/img/"+new Date().getTime()+files[i].getOriginalFilename();