文件上传上传到物理路径_OA系统-上传下载功能和SVN使用

1. 文件上传下载展示和思路

(1) 图片的上传,是把图片数据以二进制的方式放入数据库,还是把图片上传到服务器的某个目录下,数据库记录这个目录?哪种方式好?

将图片上传到服务器的某个目录,比较好,访问起来比较方便,缺点是当服务器重启时,MYEclipse图片也会消失

(2) 图片的上传下载在java中有哪些jar包支持?

7b514406575e04f8a8b7f8b36044549e.png

2. 开始上传并理解上传API的作用

(1) 简述文件上传的步骤

//1.创建FileItemFactory对象

//2.创建ServletFileUpload对象

//解决file表单项的文件名中文乱码问题

//3.通过ServletFileUpload对象实现上传操作,将客户端一个个表单项封装到一个个FileItem中

//4.遍历各个FileItem(相当于对各个表单项进行处理)

(2) FileItem类的方法有哪些,分别是什么意思?

System.out.println(Item.isFormField());//是否是file表单项 是file false 不是file true

System.out.println(Item.getFieldName());//表单项的name属性的值

// System.out.println(Item.getString());//对于非file表单项,value属性的值,对于file表单项,是文件内容

System.out.println(Item.getString("utf-8"));//对于非file表单项的中文乱码问题

System.out.println(Item.getName());//对于file表单项,上传文件的名称,对于非file表单项,返回null

System.out.println(Item.getContentType());//对于file表单项,上传文件mime类型,对于非file表单项,返回null

System.out.println(Item.getSize());//对于非file表单项 ,上传文件mime类型 ;对于非file表单项 ,返回null

3. 上传文件到指定目录

(1) 如何上传文件到指定目录?写出步骤

//1.创建FileItemFactory对象

FileItemFactory factory = new DiskFileItemFactory();

//2.创建ServletFileUpload对象

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("utf-8"); //解决file表单项的文件名中文乱码问题

//3.通过ServletFileUpload对象实现上传操作,将客户端一个个表单项封装到一个个FileItem中

List<FileItem> ItemList = null;

try {

ItemList = upload.parseRequest(request);

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(ItemList.size());

//4.遍历各个FileItem(相当于对各个表单项进行处理)

String name= null;

int age = 0 ;

double score =0;

for (int i = 0; i < ItemList.size(); i++) {

//取出第i个表单项

FileItem Item = ItemList.get(i);

//输出item的内容,熟悉FileItem的主要方法

if (Item.isFormField()) {//非file表单项

if ("name".equals(Item.getFieldName())) {

name=Item.getString("utf-8");

}

if ("age".equals(Item.getFieldName())) {

age = Integer.parseInt(Item.getString());

}

if ("score".equals(Item.getFieldName())) {

score = Double.parseDouble(Item.getString());

}

}else{//file表单项

//photo

if ("photo".equals(Item.getFieldName())) {

//指定上传的文件夹

File dir = new File("D:apache-tomcat-7.0.56webappsupload0/img"); //servlet是服务器技术,此处只上传到服务器的路径

if (!dir.exists()) {//判断文件夹名是否存在

dir.mkdir(); //不存在则创建新文件夹

}

//指定上传的文件名

String photoName = Item.getName();

//指定上传的文件夹和文件名

File file = new File(dir, photoName);

//上传该照片到指定位置

try {

Item.write(file);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

4. 完善上传文件到指定目录

(1) 本节课完善了文件上传的哪些点?实现代码是什么?

完善: 由逻辑路径得到物理路径提高灵活性

String realPath = this.getServletContext().getRealPath("/upload");

File dir =new File(realPath);

//完善2;为了防止文件的同名覆盖,上传到服务器端的文件重新命名

UUID uuid = UUID.randomUUID();

String extName = realName.substring(realName.lastIndexOf("."));

photoName = uuid.toString()+extName;

File file = new File(dir, photoName);

完善4 :只上传jpg.jpeg和gif文件

String contentType = Item.getContentType();//images/jpg

photoType = contentType;

if (!"image/jpeg".equals(contentType) && !"image/gif".equals(contentType)) {

request.setAttribute("mess", "只能上传jpg和gif文件");

request.getRequestDispatcher("/add.jsp").forward(request, response);

return;

}

//完善5:限制上传的单个和所有文件的大小,建议使用该方式

upload.setFileSizeMax(300*1024);//单个文件的上限

upload.setSizeMax(5*1024*300);//一次上传的所有文件的总大小的上限

upload.setHeaderEncoding("utf-8"); //完善解决file表单项的文件名中文乱码问题

5. 保存上传信息到数据库

(1) 本节课要往数据库里面存哪些数据?这些数据的作用是什么?

RealName:文件的真实姓名 显示给用户时,需要使用的名称

photoType:图片的类型 文件的类型,判断文件的类型时需要

PhotoName:图片的访问名称 后台调用的是文件的原始姓名

6. 将服务器的图片在客户端下载

(1) 简述下载的步骤,视图层怎么写,控制层怎么写?贴出代码,并写出注释

视图层:标签连接 指向servlet(DownServlet)

控制层:

7. 完善下载操作

(1) 本节课完善了下载的哪些点?贴出对应代码和注释

// User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763

if(type.toLowerCase().indexOf("khtml")>0){

realName = URLEncoder.encode(realNames,"utf-8");

}else {

realName=new String(realNames.getBytes("utf-8"),"iso-8859-1");//解决get提交方式的中文下载乱码问题

}

//下载方式 弹窗提示

resp.setContentLength( (int)file.length());//文件长度

resp.setContentType(student.getPhotoType());//MIME类型

// resp.setHeader("Content-disposition", "inline"); 下载方式 默认inline 直接下载并展示

resp.setHeader("Content-disposition", "attachment;filename="+realName); //下载方式 弹窗提示

8. 版本管理和SVN入门

(1) 什么是版本管理?

工程数据库中的重要概念,是工程数据库管理系统具有的重要功能与特性。版本是记录特定对象 各个可选状态的快照,版本管理的任务就是对对象 的历史演变过程进行记录和维护,根据实际应用背 景选择合适的版本间的拓扑结构,并至少应包括以 下功能:新版本的生成;统一、协调管理各个版本; 有效记录不同版本的演变过程及对不同版本进行有 效管理,以尽可能少的数据冗余记录各版本。同时 还要保证不同版本在逻辑上的一致性和相对独立 性,一个版本的产生和消失不会对其余版本的内容 产生影响。版本切换时,指定了新的当前版本后, 必须保证对象的映象和指定的版本保持一致

为什么需要版本管理?

1 作为数据备份

2 版本管理,避免版本管理混乱

3 提高代码质量

4 提高协同,多人开发时的效率

5. 明确分工责任

6. 除了代码以外,简历等等都可以进行版本管理

(2) 除了svn外,还有哪些版本管理软件?

目前配置管理工具最常用的当然是免费的SVN了,除此之外免费的工具还有CVS(SVN的前身)比较常用,收费的工具有ClearCase、VSS、Firefly等,另外还有些分布式配置管理工具(如GIT)用的人不是太多

基本上SVN、CVS、ClearCase(简称CC)、VSS这4款工具覆盖了至少90%以上

9. 安装和使用Visual SVN

(1) 按照本节课的内容,安装svn并使用visual svn

10. Subclipse的安装和使用1

11. Subclipse的安装和使用2

(1) 简述在eclipse中安装svn插件的步骤,以及注意事项

· 一,下载一个svn插件(这里演示用:site-1.8.16.zip),将其解压得到下面的目录结构,然后将这个目录中的features和plugins两个子目录,复制到eclipse中的两个相同目录下,见下图

·

38679ea4e41cd8c7e4ad9f044f1f5438.png

·

80912dd42746517174143d7b6d6d9776.png

之后可以打开eclipse,点击window-->show view-->然后输入‘svn’,如果出现下图所示,就表示配置成功了。

·

75442a2812b77d3ebe61791cc7a37520.png

·

(2) 简述在eclipse中使用svn的方法

1.

在eclipse中,从Window -> Show view里调出SVN资源库视图

2.

0adde57efe48305d5bacc16f492c2a28.png

在SVN资源库窗口的空白位置右键选择新建资源库位置

0ebe2eb2808becc92a954e90dfb433ea.png

填好服务器的地址

ad072945fa5e2a85f1c514016089c27d.png

END

1.

接受数字证书,输入用户名密码

910543195714f54c84b4cb843f4d5d01.png

资源库导入成功,SVN资源库视图下出现导入的资源库

ffebc69e033c0b8f08d9b31d892566ac.png

右键需要上传的project --> Team --> Share project

a9d5c1211b3a247b43f458ba148e791e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值