Jquery和Java(Servlet)文件上载,包括删除、中止、下载。。。。。选择权
我正在尝试上载文件(使用Jquery和Servlet)Jquery和Java(Servlet)文件上载,包括删除、中止、下载。。。。。选择权,java,javascript,jquery,html,servlets,Java,Javascript,Jquery,Html,Servlets,我正在尝试上载文件(使用Jquery和Servlet) 登录页 单击添加文件按钮添加多个文件并调用servlet。 文件已成功上载。作为回应,我得到了json数据 Servlet文件: UploadServlet.java public class UploadServlet extends HttpServlet { private File fileUploadPath; public void init(ServletConfig config) {
UploadServlet.java
public class UploadServlet extends HttpServlet {
private File fileUploadPath;
public void init(ServletConfig config) {
fileUploadPath = new File(config.getInitParameter("upload_path"));
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getParameter("getfile") != null && !request.getParameter("getfile").isEmpty()) {
File file = new File(fileUploadPath,request.getParameter("getfile"));
if (file.exists()) {
int bytes = 0;
ServletOutputStream op = response.getOutputStream();
response.setContentType("text/html");
response.setContentType(getMimeType(file));
response.setContentLength((int) file.length());
response.setHeader( "Content-Disposition", "inline; filename=\"" + file.getName() + "\"" );
byte[] bbuf = new byte[1024];
DataInputStream in = new DataInputStream(new FileInputStream(file));
while ((in != null) && ((bytes = in.read(bbuf)) != -1)) {
op.write(bbuf, 0, bytes);
}
in.close();
op.flush();
op.close();
}
} else if (request.getParameter("delfile") != null && !request.getParameter("delfile").isEmpty()) {
File file = new File(fileUploadPath, request.getParameter("delfile"));
if (file.exists()) {
file.delete(); // TODO:check and report success
}
} else if (request.getParameter("getthumb") != null && !request.getParameter("getthumb").isEmpty()) {
File file = new File(fileUploadPath, request.getParameter("getthumb"));
BufferedImage im =null;
if (file.exists()) {
String mimetype = getMimeType(file);
if (mimetype.endsWith("png") || mimetype.endsWith("jpeg") || mimetype.endsWith("gif")
{ im = ImageIO.read(file);
if (im != null) {
BufferedImage thumb = Scalr.resize(im, 75);
ByteArrayOutputStream os = new ByteArrayOutputStream();
if (mimetype.endsWith("png")) {
ImageIO.write(thumb, "PNG" , os);
response.setContentType("image/png");
} else if (mimetype.endsWith("jpeg")) {
ImageIO.write(thumb, "jpg" , os);
response.setContentType("image/jpeg");
} else if (mimetype.endsWith("gif")) {
ImageIO.write(thumb, "GIF" , os);
response.setContentType("image/gif");
}else{
ImageIO.write(thumb, "doc" , os);
response.setContentType("image/doc");
}
ServletOutputStream srvos = response.getOutputStream();
response.setContentLength(os.size());
response.setHeader( "Content-Disposition", "inline; filename=\"" + file.getName() + "\"" );
os.writeTo(srvos);
srvos.flush();
srvos.close();
}
}
}
} else {
PrintWriter writer = response.getWriter();
writer.write("call POST with multipart form data");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (!ServletFileUpload.isMultipartContent(request)) {
throw new IllegalArgumentException("Request is not multipart, please 'multipart/form-data' enctype for your form.");
}
DiskFileItemFactory ldch_disk_file = new DiskFileItemFactory();
ldch_disk_file.setRepository(fileUploadPath);
ServletFileUpload uploadHandler = new ServletFileUpload(ldch_disk_file);
PrintWriter writer = response.getWriter();
response.setContentType("application/json");
JSONArray json = new JSONArray();
try {
List<FileItem> items = uploadHandler.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
File file = new File(fileUploadPath, item.getName());
item.write(file);
JSONObject jsono = new JSONObject();
jsono.put("name", item.getName());
jsono.put("size", item.getSize());
jsono.put("url", "upload?getfile=" + item.getName());
jsono.put("thumbnail_url", "upload?getthumb=" + item.getName());
jsono.put("delete_url", "upload?delfile=" + item.getName());
jsono.put("delete_type", "GET");
json.put(jsono);
}
}
} catch (FileUploadException e) {
throw new RuntimeException(e);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
writer.write(json.toString());
writer.close();
}
}
private String getMimeType(File file) {
String mimetype = "";
if (file.exists()) {
if (getSuffix(file.getName()).equalsIgnoreCase("png")) {
mimetype = "image/png";
} else if (getSuffix(file.getName()).equalsIgnoreCase("docx")) {
mimetype = "image/doc";
}else {
javax.activation.MimetypesFileTypeMap mtMap = new javax.activation.MimetypesFileTypeMap();
mimetype = mtMap.getContentType(file);
} }
System.out.println("mimetype: " + mimetype);
return mimetype;
}
private String getSuffix(String filename) {
String suffix = "";
int pos = filename.lastIndexOf('.');
if (pos > 0 && pos < filename.length() - 1) {
suffix = filename.substring(pos + 1);
}
System.out.println("suffix: " + suffix);
return suffix;
}
公共类UploadServlet扩展了HttpServlet{
私有文件上传路径;
public void init(ServletConfig配置){
fileUploadPath=新文件(config.getInitParameter(“upload_path”);
}
@凌驾
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
if(request.getParameter(“getfile”)!=null&&!request.getParameter(“getfile”).isEmpty(){
File File=新文件(fileUploadPath,request.getParameter(“getfile”);
if(file.exists()){
int字节=0;
ServletOutputStream op=response.getOutputStream();
response.setContentType(“text/html”);
setContentType(getMimeType(文件));
response.setContentLength((int)file.length());
response.setHeader(“内容处置”,“内联;文件名=\”+文件.getName()+“\”);
字节[]bbuf=新字节[1024];
DataInputStream in=新DataInputStream(新文件InputStream(文件));
而((in!=null)&&((bytes=in.read(bbuf))!=-1)){
op.write(bbuf,0,字节);
}
in.close();
op.flush();
op.close();
}
}else if(request.getParameter(“delfile”)!=null&&!request.getParameter(“delfile”).isEmpty()){
File File=新文件(fileUploadPath,request.getParameter(“delfile”);
if(file.exists()){
file.delete();//TODO:检查并报告成功
}
}else if(request.getParameter(“gethumb”)!=null&&!request.getParameter(“gethumb”).isEmpty(){
File File=新文件(fileUploadPath,request.getParameter(“gethumb”);
BuffereImage im=null;
if(file.exists()){
字符串mimetype=getMimeType(文件);
if(mimetype.endsWith(“png”)| | mimetype.endsWith(“jpeg”)| | mimetype.endsWith(“gif”)
{im=ImageIO.read(文件);
如果(im!=null){
BuffereImage thumb=缩放大小(im,75);
ByteArrayOutputStream os=新建ByteArrayOutputStream();
if(mimetype.endsWith(“png”)){
ImageIO.write(拇指,“PNG”,操作系统);
response.setContentType(“image/png”);
}else if(mimetype.endsWith(“jpeg”)){
写(拇指,“jpg”,操作系统);
response.setContentType(“图像/jpeg”);
}else if(mimetype.endsWith(“gif”)){
ImageIO.write(拇指,“GIF”,操作系统);
response.setContentType(“image/gif”);
}否则{
ImageIO.write(拇指,“文档”,操作系统);
response.setContentType(“图像/文档”);
}
ServletOutputStream srvos=response.getOutputStream();
response.setContentLength(os.size());
response.setHeader(“内容处置”,“内联;文件名=\”+文件.getName()+“\”);
书面操作系统(srvos);
srvos.flush();
srvos.close();
}
}
}
}否则{
PrintWriter=response.getWriter();
write(“包含多部分表单数据的呼叫站”);
}
}
@凌驾
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
如果(!ServletFileUpload.isMultipartContent(请求)){
抛出新的IllegalArgumentException(“请求不是多部分的,请为您的表单“多部分/表单数据”enctype”);
}
DiskFileItemFactory ldch_disk_file=新的DiskFileItemFactory();
ldch_disk_file.setRepository(fileUploadPath);
ServletFileUpload uploadHandler=新的ServletFileUpload(ldch\U磁盘\U文件);
PrintWriter=response.getWriter();
setContentType(“应用程序/json”);
JSONArray json=新的JSONArray();
试一试{
列表项=uploadHandler.parseRequest(请求);
用于(文件项:项){
如果(!item.isFormField()){
File File=新文件(fileUploadPath,item.getName());
项目。写入(文件);
JSONObject jsono=新的JSONObject();
put(“name”,item.getName());
put(“size”,item.getSize());
put(“url”,“upload?getfile=“+item.getName());
jsono.put(“缩略图url”,“上传?getthumb=“+item.getName()”);
put(“delete_url”,“upload?delfile=“+item.getName());
put(“delete_type”、“GET”);
json.put(jsono);
}
}
}捕获(文件上载异常){
抛出新的运行时异常(e);
}捕获(例外e){
抛出新的运行时异常(e);
}最后{
write(json.toString());
writer.close();
}
}
私有字符串getMimeType(Fil