当前位置:首页 » 文件管理 » java表单提交文件上传

java表单提交文件上传

发布时间: 2022-02-23 21:47:18

java文件上传的几种方式

1、通过Servlet类上传
2、通过Struts框架实现上传
ITJOB学到两种方式

❷ SpringMVC表单提交时,多文件上传和单个文件上传有些什么区别

基于Spring3 MVC实现基于form表单文件上传
一:杂项准备
环境搭建参考这里-http://blog.csdn.net/jia20003/article/details/8471169
二:前台页面
根据RFC1867,只要在提交form表单中声明提交方法为POST,enctype属
性声明为multipart/form-data, action声明到要提交的url即可。具体如下:

三:spring配置
使用spring3的MultipartHttpReqest来接受来自浏览器的发送的文件内容。
需要配Multipart解析器在express-servlet.xml中。内容如下:

同时还需要在maven的pom.xml文件添加apachefileupload与common-io两个包。

四:Controller中方法实现

[java] view plain
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public ModelAndView getUploadFile(HttpServletRequest request, HttpServletResponse response) {
System.out.println("fucking spring3 MVC upload file with Multipart form");
String myappPath = request.getSession().getServletContext().getRealPath("/");
try {
if (request instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
System.out.println("fucking spring3 MVC upload file with Multipart form");
// String myappPath = multipartRequest.getServletContext().getRealPath("/");
// does not work, oh my god!!
MultipartFile file = multipartRequest.getFiles("userfile1").get(0);
long size = file.getSize();
byte[] data = new byte[(int) size];
InputStream input = file.getInputStream();
input.read(data);

// create file, if no app context path, will throws access denied.
// seems like you could not create any file at tomcat/bin directory!!!
File outFile = new File(myappPath + File.separator + file.getOriginalFilename());
if(!outFile.exists()) {
outFile.createNewFile();
System.out.println("full path = " + outFile.getAbsolutePath());
} else {
System.out.println("full path = " + outFile.getAbsolutePath());
}
FileOutputStream outStream = new FileOutputStream(outFile);

outStream.write(data);
outStream.close();
input.close();
}
} catch (Exception e) {
e.printStackTrace();
}

return new ModelAndView("welcome");
}

❸ java web前端上传文件到后台常用的几种方式

1、使用form表单提交
但是这里要记得添加enctype属性,这个属性是指定form表单在向服务器提交之前,对表单数据如何进行编码。 文件域中的name="file"属性的值,需要和后台接收的对象名一致,不然接收不到。
2、使用ajax提交文件
使用ajax提交首先引入jquery-form.js文件才能实现,接着使用上面的html代码,加入以js则可以实现ajax提交文件。
3、使用FormData对象
4、后台接收文件,框架采用的Spring Boot 微服务框架,因为该框架搭建很方便所以采用这个框架写例子。

❹ form java springmvc怎么上传文件

@Controller

@RequestMapping("/saveloads")

public class testload {

@RequestMapping("/index")

public ModelAndView index(){

ModelAndView model=new ModelAndView("/user/index");

return model;

}

@RequestMapping("/saveload")

public ModelAndView upload(@RequestParam(value="fileload")MultipartFile file){

ModelAndView model=new ModelAndView("/user/result");

//拿到文件的名字

String fileName=file.getOriginalFilename();

System.out.println(fileName);

//转移目标

File tagetFile=new File("F:/image/",fileName);

try{

//将MUltipartfile转移到tagetFile

file.transferTo(tagetFile);

}catch(IllegalStateException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}

model.addObject("fileUrl","/image/"+fileName);

return model;

}

}

写一个有上传功能的jsp页面,action自己改吧,
然后在Tomcat服务器中设置文件存储的位置,要和代码中写的位置一样,我写的是F:/image/

❺ JAVA WEB文件上传步骤

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 可以获取上传的文件名。

❻ java表单提交里面的文件上传,用同步的方式好还是用异步的好啊

你好,很高兴回答你的问题。
这里做成异步比较好。如果同步的话,遇到文件大的话,表单提交会很慢,体验非常不好。
如果有帮助到你,请点击采纳。

❼ java实现文件上传,代码尽量简洁~~~~~·

普通方法实现任意上传?本地文件?本地文件直接用FileInputStream即可。
jspsmartupload需要在提交的form表单中添加一个属性,具体内容忘了=。=

❽ Java中上传文件和表单数据提交如何质莸

//1.form表单
//注:上传文件的表单,需要将form标签设置enctype="multipart/form-data"属性,意思是将Content-Type设置成multipart/form-data
<form action="xxx" method="post" enctype="multipart/form-data">
<input type="text" name="name" id="id1" /> <br />
<input type="password" name="password" /> <br />
<input type="file" name="file" value="选择文件"/> <input id="submit_form" type="submit" value="提交"/>
</form>
//2.servlet实现文件接收的功能
boolean isMultipart = ServletFileUpload.isMultipartContent(request);//判断是否是表单文件类型

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
List items = sfu.parseRequest(request);//从request得到所有上传域的列表
for(Iterator iter = items.iterator();iter.hasNext();){
FileItem fileitem =(FileItem) iter.next(); if(!fileitem.isFormField()&&fileitem!=null){
//判读不是普通表单域即是file
System.out.println("name:"+fileitem.getName());
}
}

3.扩展一下springboot
@RequestMapping("/xxx")
@ResponseBody
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(new File(
file.getOriginalFilename())));
System.out.println(file.getName());
out.write(file.getBytes());
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return "上传失败," + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "上传失败," + e.getMessage();
}
return "上传成功";
} else {
return "上传失败,因为文件是空的.";
}
}

❾ java如何实现文件上传

public static int transFile(InputStream in, OutputStream out, int fileSize) {
int receiveLen = 0;
final int bufSize = 1000;
try {
byte[] buf = new byte[bufSize];
int len = 0;
while(fileSize - receiveLen > bufSize)
{
len = in.read(buf);
out.write(buf, 0, len);
out.flush();
receiveLen += len;
System.out.println(len);
}
while(receiveLen < fileSize)
{
len = in.read(buf, 0, fileSize - receiveLen);
System.out.println(len);
out.write(buf, 0, len);
receiveLen += len;
out.flush();
}
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return receiveLen;
}
这个方法从InputStream中读取内容,写到OutputStream中。
那么发送文件方,InputStream就是FileInputStream,OutputStream就是Socket.getOutputStream.
接受文件方,InputStream就是Socket.getInputStream,OutputStream就是FileOutputStream。
就OK了。 至于存到数据库里嘛,Oracle里用Blob。搜索一下,也是一样的。从Blob能获取一个输出流。

❿ java上传文件时用户不提交表单,上传的文件怎么删除

给个建议,临时目录的文件其实可以异步删除 ,

就是说不需要依赖用户是否提交表单这个行为。

整个服务里需要有那么一个线程或者进程管理这个目录

这个线程需要有2块功能

  1. 定时侦测目录的文件数/目录空间

  2. 给一个阀值,当目录文件数、空间到怎样的值 ,按文件的创建时间排序删除最老的文档,删除数量可以给定一个百分比,当然你可以做一些过滤排除(比如创建时间到现在时间差少于半小时的不删除)

热点内容
3层加密 发布:2024-10-27 08:17:55 浏览:137
阿里云服务器备案问题 发布:2024-10-27 08:17:55 浏览:353
华为手机如何恢复安卓原来版本 发布:2024-10-27 08:14:20 浏览:694
服务器的访问地址 发布:2024-10-27 08:12:36 浏览:190
安卓11如何调频apk 发布:2024-10-27 08:12:36 浏览:292
蒸汽再压缩法 发布:2024-10-27 07:59:13 浏览:406
新宝来压缩比 发布:2024-10-27 07:57:59 浏览:340
sqlserver插入数据 发布:2024-10-27 07:57:52 浏览:330
编译安装ImageMagick 发布:2024-10-27 07:52:30 浏览:722
androidmnc 发布:2024-10-27 07:46:42 浏览:556