码迷,mamicode.com
首页 > Web开发 > 详细

1.6 文件上传组件

时间:2016-08-02 01:24:14      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

1.6 文件上传组件
1.6.1 基本形制
<input type="file" name="myfile"/>

1.6.2 常用属性
1.6.2.1 类型type
type="file"说明这个控件是一个文件上传组件,由一个文本框和一个按钮组合而成。

1.6.2.2 名称name
name是文件上传组件名,是后台服务器负责处理文件的部分与前台上传组件联系的唯一途径。

前台需要通过它告知后台,后台需要它了解前台。

详情请参考1.6.4.1中<input type="file" name="myfile"/>和@RequestParam("myfile") MultipartFile file的对应关系

以及1.6.4.2中多个<input type="file" name="myfile"/>和@RequestParam("myfile") MultipartFile[] files的对应关系

1.6.2.3 宽度size
这个属性决定了显示文件路径的文本框的可见字符数,默认20。这个间接确定了此控件的宽度。

1.6.3 JS操作
1.6.3.1 取值
文件上传组件的value属性可以得到文件全路径文件名,如果没有选择文件则会得到零长度字符串。
var file=document.getElementsByName("myfile")[0];
alert(file.value);
注意用JS对value赋值无效。

1.6.3.2 创建
以下代码实现了动态创建文件上传组件并加入到一个div中
var div=document.getElementById("myDiv");

var file1=document.createElement("input");
file1.type="file";
file1.name="myfile";

div.appendChild(file1);
div.appendChild(document.createElement("br"));

1.6.4 后台响应(SpringMVC负责处理请求)
1.6.4.1 单文件方案
这个方案里前台组件名和后台file是一一对应的关系,所以一个文件上传组件名对一个MultipartFile变量,双方通过name建立联系。
前台:
<form name="form1" action="uploadFile.html" method="post" ENCTYPE="multipart/form-data">
    <input type="file" name="myfile"/><br/>
    <input type="submit" value="upload"><br/>
</form>
后台:
@Controller
public class WebController{
    @RequestMapping(value="/uploadFile")
    public String uploadPosdetailFile(@RequestParam("myfile") MultipartFile file,HttpServletRequest request,HttpServletResponse response){
        try {
            String uploadFileName=file.getOriginalFilename();
            request.setAttribute("uploadFileName", uploadFileName);
            
            return "/pages/sample/index.jsp";
        } catch (Exception e) {
            e.printStackTrace();
            
            return "pages/error/index.jsp";
        }
    }
}

1.6.4.2 多文件方案
前台:
下面代码能创建多个文件上传组件,所以后台必须是数组形式
<form name="form1" action="muploadFile.html" method="post" ENCTYPE="multipart/form-data">
    <input type="file" name="myfile"/><br/>
    <input type="submit" value="upload"><br/>
    
    <div id="myDiv"></div>
</form>

<button onclick="addmore()">Add</button>
<script language="javascript" charset="utf-8">
<!--

function addmore(){
    var div=document.getElementById("myDiv");

    var file1=document.createElement("input");
    file1.type="file";
    file1.name="myfile";
    
    div.appendChild(file1);
    div.appendChild(document.createElement("br"));
}


//-->
</script>

后台:
注意下面files变成了数组形式,以因对前台可能存在多个文件上传组件的可能。
@Controller
public class WebController{
    @RequestMapping(value="/muploadFile")
    public String muploadFile(@RequestParam("myfile") MultipartFile[] files,HttpServletRequest request,HttpServletResponse response){
        try {
            int i=1;
            for(MultipartFile file:files){
                String uploadFileName=file.getOriginalFilename();
                System.out.println(i+":"+uploadFileName);
                i++;
            }
            
            //request.setAttribute("uploadFileName", uploadFileName);
            
            return "/pages/sample/index.jsp";
        } catch (Exception e) {
            e.printStackTrace();
            
            return "pages/error/index.jsp";
        }
    }
}

版权所有,转载请注明作者出处。

2016年8月2日0:13:42

1.6 文件上传组件

标签:

原文地址:http://www.cnblogs.com/xiandedanteng/p/5727765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!