文件上传代码段

本文介绍了一个文件上传表单的设计与实现过程,包括前端表单的搭建、文件类型的判断及后端处理逻辑。通过示例代码展示了如何使用Spring框架进行文件上传的配置,并详细解释了从用户选择文件到服务器端保存文件的整个流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml

<!-- 文件上传表单的视图解析器 -->  
<bean id="multipartResolver"    
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">      
    <property name="maxUploadSize" value="204800" />    
</bean> 

html

<!-- 文件上传表单 -->
<form id= "uploadForm" class="form-horizontal" role="form" enctype="multipart/form-data" method="POST" action="">
    <label for="inputname" class="col-sm-1 control-label">文件选择</label>
    <div class="col-sm-1 col-sm-offset-1">
        <input type="file" id="file" name="upload" onchange="set(this)">
        <input type="text" id="fileId"  style="display:none">
        <input type="text" id="fileVersion" name="fileVersion" style="display:none">
    </div>
    <div class="col-sm-1 col-sm-offset-2">
        <input type="button" @click="submitUpload" value="上传" style="display:none">
    </div>
</form>

js

var formData = new FormData($( "#uploadForm" )[0]);
$.ajax({
     url : "../app/application/upload",  
     type: 'POST',  
     data: formData, 
     dataType:'json',
     async: false,  
     cache: false,  
     contentType: false,  
     processData: false, 
     success : function(r) {
        if(r.code === 0){
            alert('上传成功!请补充基本信息并保存')
        }else{
            alert('文件已存在,请修改版本后上传');
        }     
     },
});  
//获取上传文件的类型及名称,填入表单
function set(file){
    var input = document.getElementById("file");
    var val= $("#file").val();
    var type = val.substr(val.lastIndexOf(".")+1);
    var str=val.substr(0,val.lastIndexOf("."));
    document.getElementById("fileName").value=str;
    document.getElementById("fileType").value=type;
}

java

@RequestMapping("/upload")
public Result upload(HttpServletRequest request) {

String version=request.getParameter("fileVersion");
Result result = null;
try {
  MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;  
  Map<String, MultipartFile> fileMap = mRequest.getFileMap();  
  Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet().iterator();
  String fileName = ""; 
  InputStream inStream =null;
  while(it.hasNext()) {  
      Map.Entry<String, MultipartFile> entry = it.next();  
      MultipartFile mFile = entry.getValue();  
      fileName = mFile.getOriginalFilename(); 
      inStream=mFile.getInputStream();
  } 
  String path=Global.getAppFilesDir();
  byte[] buffer = new byte[1024 * 5];
  String name=fileName;
  File temp = new File(path,name);
  //重名文件判断处理
  if(!temp.exists()){
  try {
    temp.createNewFile();
    //保存文件
    FileOutputStream fs = new FileOutputStream(temp);
    int bytesum = 0;
    int byteread = 0;
    while ((byteread = inStream.read(buffer)) != -1) {
        bytesum += byteread; // 字节数 文件大小
        fs.write(buffer, 0, byteread);
    }
    inStream.close();
    fs.close();
    result = Result.ok();
 } catch (IOException e) {
// TODO Auto-generated catch block
    e.printStackTrace();
    result = Result.error();
}
}else{
 result = Result.error("已存在同名同类型同版本文件,请重命名文件");
}
} catch (IOException e) {
// TODO Auto-generated catch block
 e.printStackTrace();
}
return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值