java文件上传到服务器_java上传文件到本地服务器实例详解

本文详细介绍了如何使用SpringMVC+Spring+Mybatis(SSM)框架实现文件上传到本地服务器的功能。从配置Tomcat服务器端口,创建数据库表,定义实体类,编写Mapper和Service接口及其实现,到控制器处理文件上传,每一步都有清晰的代码示例。文件上传后,信息存储在数据库,并保存在服务器指定目录。
摘要由CSDN通过智能技术生成

接着昨天的来讲,昨天我们自制了一个简易的本地服务器。其中我的本地服务器tomcat端口号为88。今天我们来接着讲。

我这里用了ssm框架来做,首先你得搭建一个SpringMVC+Spring+mybatis的环境。如果你不会也没关系。可以看看我之前在最代码或者csdn上搭建的例子。

最代码例子的地址为:

http://www.zuidaima.com/share/2978816501746688.htm

csdn例子的地址为:

http://blog.csdn.net/u010798367/article/details/52995905

如果你不想学,那也没关系。其实上传的关键代码就一句:public String uplodeFile(LearnFile lf,HttpServletRequest request) throws Exception{

long startTime = System.currentTimeMillis();

// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)

CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(

request.getSession().getServletContext());

// 检查form中是否有enctype="multipart/form-data"

if (multipartResolver.isMultipart(request)) {

// 将request变成多部分request

MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;

// 获取multiRequest 中所有的文件名

Iterator iter = multiRequest.getFileNames();

while (iter.hasNext()) {

// 一次遍历所有文件

MultipartFile file = multiRequest.getFile(iter.next().toString());

if (file != null) {

String path = "D:/fdream/file/" + file.getOriginalFilename();

// 上传

file.transferTo(new File(path));

String fileurl="http://localhost:88/fdream/file"+file.getOriginalFilename();

LearnFile learnfile = new LearnFile(file.getOriginalFilename(), fileurl, lf.getUplodetime());

fileService.uplodeFile(learnfile);

}else{

System.out.println("上传文件不能为空");

}

}

}

long endTime = System.currentTimeMillis();

System.out.println("上传所花时间:" + String.valueOf(endTime - startTime) + "ms");

return "/index";

}

我也不知道这个公众号发文章怎么格式化。所以我简易你最好电脑访问。这样可以cp代码仔细看看!

我还是仔细来说明下,毕竟我会完整的实现一个项目,所以细节很重要。首先,我在tomcat的server.xml配置文件配置两句话 。以后我就把上传的图片放到本地服务器D盘的fdream文件夹下面的img目录中,文件就放到D盘的fdream文件夹下面的file目录中。详情可以看下昨天的文章。

2.现在来创建一张数据库表“learnfile”CREATE TABLE `learnfile` (

`fileid` int(11) NOT NULL AUTO_INCREMENT COMMENT '文件id',

`filename` varchar(255) DEFAULT NULL COMMENT '文件名',

`fileurl` varchar(255) DEFAULT NULL COMMENT '文件上传地址',

`uplodetime` varchar(255) DEFAULT NULL COMMENT '文件上传时间',

PRIMARY KEY (`fileid`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

3.新建实体package com.fdream.entity;

/**

* 文件实体

* @author quanmin

*

*/

public class LearnFile {

//文件id

private int fileid;

//文件名

private String filename;

//文件上传地址

private String fileurl;

//文件上传时间

private String uplodetime;

public LearnFile() {

}

public LearnFile(int fileid, String filename, String fileurl, String uplodetime) {

super();

this.fileid = fileid;

this.filename = filename;

this.fileurl = fileurl;

this.uplodetime = uplodetime;

}

public LearnFile(String filename, String fileurl, String uplodetime) {

this.filename = filename;

this.fileurl = fileurl;

this.uplodetime = uplodetime;

}

public int getFileid() {

return fileid;

}

public void setFileid(int fileid) {

this.fileid = fileid;

}

public String getFilename() {

return filename;

}

public void setFilename(String filename) {

this.filename = filename;

}

public String getFileurl() {

return fileurl;

}

public void setFileurl(String fileurl) {

this.fileurl = fileurl;

}

public String getUplodetime() {

return uplodetime;

}

public void setUplodetime(String uplodetime) {

this.uplodetime = uplodetime;

}

}

4.新建FileMapperpackage com.fdream.mapper;

import com.fdream.entity.LearnFile;

/**

* 文件持久层接口

* @author quanmin

*

*/

public interface FileMapper {

/**

* 上传文件

* @param file

* @return

* @throws Exception

*/

public boolean uplodeFile(LearnFile lf) throws Exception;

}

5.新建FileMapper.xml<?xml version="1.0" encoding="UTF-8"?>

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

insert into learnfile(filename,fileurl,uplodetime) values(#{filename},#{fileurl},#{uplodetime})

6.新建IFileServicepackage com.fdream.service;

import com.fdream.entity.LearnFile;

/**

* 文件服务层接口

* @author quanmin

*

*/

public interface IFileService {

/**

* 上传文件

* @param file

* @return

* @throws Exception

*/

public boolean uplodeFile(LearnFile lf) throws Exception;

}

7.新建FileServiceImplpackage com.fdream.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import com.fdream.entity.LearnFile;

import com.fdream.mapper.FileMapper;

import com.fdream.service.IFileService;

/**

* 文件服务层接口实现

* @author quanmin

*

*/

@Service

@Transactional //此处不再进行创建SqlSession和提交事务,都已交由spring去管理了。

public class FileServiceImpl implements IFileService {

@Resource

private FileMapper fileDao;

@Override

public boolean uplodeFile(LearnFile lf) throws Exception {

return fileDao.uplodeFile(lf);

}

}

8.新建FileControllerpackage com.fdream.controller;

import java.io.File;

import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import com.fdream.entity.LearnFile;

import com.fdream.service.IFileService;

/**

*

* 文件控制层

* @author quanmin

*

*/

@Controller

@RequestMapping("/file")

public class FileController {

@Autowired

private IFileService fileService;

/**

* 上传文件

* @param lf

* @param request

* @return

* @throws Exception

*/

@RequestMapping("/uplodeFile")

public String uplodeFile(LearnFile lf,HttpServletRequest request) throws Exception{

long startTime = System.currentTimeMillis();

// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)

CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(

request.getSession().getServletContext());

// 检查form中是否有enctype="multipart/form-data"

if (multipartResolver.isMultipart(request)) {

// 将request变成多部分request

MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;

// 获取multiRequest 中所有的文件名

Iterator iter = multiRequest.getFileNames();

while (iter.hasNext()) {

// 一次遍历所有文件

MultipartFile file = multiRequest.getFile(iter.next().toString());

if (file != null) {

String path = "D:/fdream/file/" + file.getOriginalFilename();

// 上传

file.transferTo(new File(path));

String fileurl="http://localhost:88/fdream/file"+file.getOriginalFilename();

LearnFile learnfile = new LearnFile(file.getOriginalFilename(), fileurl, lf.getUplodetime());

fileService.uplodeFile(learnfile);

}else{

System.out.println("上传文件不能为空");

}

}

}

long endTime = System.currentTimeMillis();

System.out.println("上传所花时间:" + String.valueOf(endTime - startTime) + "ms");

return "/index";

}

}

9.这些我就不一一说明了,如果不懂ssm框架的可以先参照那两篇文章。接下来后台代码已经实现了,我写一个jsp页面addFile.jsp

pageEncoding="UTF-8"%>

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

Insert title here

文件:

记住,一定不要忘了加enctype="multipart/form-data"

然后开始访问页面。

5f44669d9023f819b9cfa4031178418d.png

添加成功后跳转到index页面

5f44669d9023f819b9cfa4031178418d.png

现在我们来看看数据库。

5f44669d9023f819b9cfa4031178418d.png

再来看看d盘的fdream文件夹下的file目录

5f44669d9023f819b9cfa4031178418d.png

好的,这个已经成功完成。接下来就是实践一个项目了。也是基于这上面做的。所以大家可以仔细看看最代码和csdn的框架教学。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值