JAVA WEB文件上传步骤
今天弄了1天JSP文件上传图片都没成功,网上没找到完整的资源,老师说我做的是让服务器到我电脑上来找文件,那是不可能成功的,我都不明白,哪位老师能给我说说简单的步骤,或者提...
今天弄了1天JSP文件上传图片都没成功,网上没找到完整的资源,老师说我做的是让服务器到我电脑上来找文件,那是不可能成功的,我都不明白,哪位老师能给我说说简单的步骤,或者提供一份完整的上传源码给我吗??谢谢!!!
展开
推荐于2017-11-28 · 知道合伙人数码行家
关注
展开全部
JAVA WEB文件上传步骤如下:
实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。
1、Web 端上传文件。在 Web 页面中添加上传输入项:<input type="file"> 设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。(2) 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3) 表单提交的方式要是 post
2、服务器端获取文件。如果提交表单的类型为 multipart/form-data 时,就不能采用传统方式获取数据。因为当表单类型为 multipart/form-data 时,浏览器会将数据以 MIME 协议的形式进行描述。如果想在服务器端获取数据,那么我们必须采用获取请求消息输入流的方式来获取数据。
3、Apache-Commons-fileupload。为了方便用户处理上传数据,Apache 提供了一个用来处理表单文件上传的开源组建。使用 Commons-fileupload 需要 Commons-io 包的支持。
4、fileuplpad 组建工作流程
(1)客户端将数据封装在 request 对象中。
(2)服务器端获取到 request 对象。
(3)创建解析器工厂 DiskFileItemFactory 。
(4)创建解析器,将解析器工厂放入解析器构造函数中。之后解析器会对 request 进行解析。
(5)解析器会将每个表单项封装为各自对应的 FileItem。
(6)判断代表每个表单项的 FileItem 是否为普通表单项 isFormField,返回 true 为普通表单项。
(7)如果是普通表单项,通过 getFieldName 获取表单项名,getString 获得表单项值。
(8)如果 isFormField 返回 false 那么是用户要上传的数据,可以通过 getInputStream 获取上传文件的数据。通过getName 可以获取上传的文件名。
实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。
1、Web 端上传文件。在 Web 页面中添加上传输入项:<input type="file"> 设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。(2) 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3) 表单提交的方式要是 post
2、服务器端获取文件。如果提交表单的类型为 multipart/form-data 时,就不能采用传统方式获取数据。因为当表单类型为 multipart/form-data 时,浏览器会将数据以 MIME 协议的形式进行描述。如果想在服务器端获取数据,那么我们必须采用获取请求消息输入流的方式来获取数据。
3、Apache-Commons-fileupload。为了方便用户处理上传数据,Apache 提供了一个用来处理表单文件上传的开源组建。使用 Commons-fileupload 需要 Commons-io 包的支持。
4、fileuplpad 组建工作流程
(1)客户端将数据封装在 request 对象中。
(2)服务器端获取到 request 对象。
(3)创建解析器工厂 DiskFileItemFactory 。
(4)创建解析器,将解析器工厂放入解析器构造函数中。之后解析器会对 request 进行解析。
(5)解析器会将每个表单项封装为各自对应的 FileItem。
(6)判断代表每个表单项的 FileItem 是否为普通表单项 isFormField,返回 true 为普通表单项。
(7)如果是普通表单项,通过 getFieldName 获取表单项名,getString 获得表单项值。
(8)如果 isFormField 返回 false 那么是用户要上传的数据,可以通过 getInputStream 获取上传文件的数据。通过getName 可以获取上传的文件名。
展开全部
前台
1. jsp的Form中,添加一个<input type="file" ......>
Form的enctype属性设置为multipart/form-data。
2 .javabean里设置对应的属性,类型为FormFile。
3 .后台可以从FormFile里取到上传文件的FileStream,
剩下的就是java文件操作了。
1. jsp的Form中,添加一个<input type="file" ......>
Form的enctype属性设置为multipart/form-data。
2 .javabean里设置对应的属性,类型为FormFile。
3 .后台可以从FormFile里取到上传文件的FileStream,
剩下的就是java文件操作了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不知道你做的具体是什么,是不是像QQ空间那个上传照片那样的功能。
首先。你上传东西,肯定要获取到资源地址
然后:你读取到资源,读出到某个你存放资源的地址。
这不就上传成功了么?
但是具体代码我也没写过,我也是菜鸟来得。大侠们勿喷。
这是我cpoy文件的代码。
package io.cb;
import java.io.*;
public class Copy {
public static void copy(String oldFilePath, String newFilePath,String fileName) {
File f1 = new File(oldFilePath); // 源文件的File对象
File f2 = new File(newFilePath+fileName+".txt"); // 目标文件的File对象
if (!f2.isFile() || !f2.exists()) {
InputStream input = null; // 准备好输入流对象,读取源文件
OutputStream out = null; // 准备好输出流对象,写入目标文件
try {
input = new FileInputStream(f1);
out = new FileOutputStream(f2);
int temp = 0;
try {
while ((temp = input.read()) != -1) { // 开始拷贝
out.write(temp); // 边读边写
}
System.out.println("拷贝完成!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("拷贝失败!");
}
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("文件已存在");
}
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
copy("E:/帮助/Hibernate3.2+API.chm","E:/帮助/","Hibernate3.2+API_1.chm");
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
哎。不知道够不够用。
首先。你上传东西,肯定要获取到资源地址
然后:你读取到资源,读出到某个你存放资源的地址。
这不就上传成功了么?
但是具体代码我也没写过,我也是菜鸟来得。大侠们勿喷。
这是我cpoy文件的代码。
package io.cb;
import java.io.*;
public class Copy {
public static void copy(String oldFilePath, String newFilePath,String fileName) {
File f1 = new File(oldFilePath); // 源文件的File对象
File f2 = new File(newFilePath+fileName+".txt"); // 目标文件的File对象
if (!f2.isFile() || !f2.exists()) {
InputStream input = null; // 准备好输入流对象,读取源文件
OutputStream out = null; // 准备好输出流对象,写入目标文件
try {
input = new FileInputStream(f1);
out = new FileOutputStream(f2);
int temp = 0;
try {
while ((temp = input.read()) != -1) { // 开始拷贝
out.write(temp); // 边读边写
}
System.out.println("拷贝完成!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("拷贝失败!");
}
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("文件已存在");
}
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
copy("E:/帮助/Hibernate3.2+API.chm","E:/帮助/","Hibernate3.2+API_1.chm");
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
哎。不知道够不够用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有成型的库啊,通过selvlet,你看看这个
http://www.cnblogs.com/springside5/archive/2012/04/30/2486037.html
http://www.cnblogs.com/springside5/archive/2012/04/30/2486037.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要是服务器可以在别人电脑上任意的找文件,隐私还要不要了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询