jsp中标签input type=“file” 可以实现文件上传
<form>
......
<input type="file" name="iconField" class="file" >
......
</form>
当提交表单的时候file会被加入到httpservletrequest中
java端代码:我使用的是springmvc 这边是我实现图片上传的实现,和文件上传其实是一样的。
public Result uploadPic(HttpServletRequest req, String fileField) {
Result result = new Result();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
MultipartFile file = multipartRequest.getFile(fileField);
FileOutputStream outputStream = null;
String filename = "";
String iconfullpath = "";
if (file != null && file.getSize() == 0) {
// 表示用户没有选择图片,使用的是默认图片
iconfullpath = saveDefalutIcon(req);
}
if (file != null && file.getSize() > 0) {
try {
if (file.getSize() > 1000000) {
result.setError(1, "上传失败:文件大小不能超过1M");
return result;
}
String iconsdirpath = ICONDIR;
filename = UUID.randomUUID() + "";// 将图片的名字唯一表示
String originalname = file.getOriginalFilename();
String pictype = originalname.substring(
originalname.lastIndexOf("."), originalname.length());
filename += pictype;
byte[] iconbyte = file.getBytes();
File iconsdir = new File(iconsdirpath);
if (!iconsdir.exists()) {
iconsdir.mkdir();
}
iconfullpath = iconsdirpath + filename;
File iconfile = new File(iconfullpath);
outputStream = new FileOutputStream(iconfile);
outputStream.write(iconbyte);
outputStream.flush();
} catch (Exception e) {
result.setError(1, "上传失败:文件保存出错");
return result;
} finally {
if (outputStream != null) {
try {
outputStream.close();
outputStream = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
result.setMsg(iconfullpath);
return result;
}
我这边是将文件上传到服务器上的文件系统中的。
代码中的参数fileField是jsp中file的name的值。
注意是使用
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
MultipartFile file = multipartRequest.getFile(fileField);获取到file上传的文件。
这边获取上传文件在不同框架中是不同的,比如通过servlet实现的后台,这边要具体情况具体分析。
最主要就是获取到上传的文件,之后的操作其实就是java的IO操作。后面的代码可以忽略,大家根据自己的需求实现。