需求:手机端请求uploadFile接口上传文件,并附带了文件的后缀名suffix(jpg,pdf等)
处理步骤:获取request的二进制流文件,调用saveFile传入流和后缀名保存本地
@RequestMapping(value = "/uploadFile/{suffix}")
public void uploadFile(HttpServletRequest request, HttpServletResponse response,@PathVariable(name = "suffix") String suffix) throws IOException {
InputStream is = request.getInputStream();
DataInputStream dis = new DataInputStream(is);
String result = "";
try {
result = saveFile(dis,suffix);
} catch (Exception e) {
e.printStackTrace();
}
PrintWriter out = response.getWriter();
out.append(result);
dis.close();
is.close();
}
/**
* 保存文件
* @param dis
* @return string
*/
private String saveFile(DataInputStream dis,String suffix) {
//文件保存路径,采用系统时间戳避免文件名重复
String fileurl = "C:\\Users\\Le\\Desktop\\"+System.currentTimeMillis()+"."+suffix;
File file = new File(fileurl);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fps = null;
try {
fps = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int length = -1;
try {
while ((length = dis.read(buffer)) != -1) {
fps.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
fps.flush();
fps.close();
} catch (IOException e) {
e.printStackTrace();
}
return fileurl;
}