Web-Servlet基础部分,文件上传-通过拼接HTML代买的形式完成图片的导入以及展示

11 篇文章 0 订阅
3 篇文章 0 订阅

Web-Servlet基础部分,通过拼接HTML代买的形式完成图片的导入以及展示

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<!--文件上传使用post-->
<form action="LoadDemo" method="post" enctype="multipart/form-data" >

    <input type="file" name="avatar"><br>
    <input type="submit" > <br>

<!--    <a href="download?name=666.mp4">666.mp4</a><br>-->
</form>


</body>
</html>
package com.blackrui;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.SocketException;
import java.util.Collection;
import java.util.UUID;

/*
Web-Servlet
实现将任意路径图片导入到服务器,
并将导入的内容展示在HTML页面

*/



@WebServlet(value ="/LoadDemo", name = "PictureImpl")
@MultipartConfig
public class PictureImpl extends HttpServlet {


    private String fileLocation="E:/nginx-1.17.2/html/";
    private String fileServer ="http://localhost/";


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {



        req.setCharacterEncoding("utf-8");
        Part part=req.getPart("avatar");

        //通过content-disposition来获取文件的名字
        String contentDisposition=part.getHeader("content-disposition");

//        String content-contentdisposition=part.getHeader("")

//indexOf 记录字符首次出现的位置,
        System.out.println(contentDisposition);

        String str="filename=\"";
        int it =contentDisposition.indexOf(str)+str.length();
        String string=contentDisposition.substring(it,contentDisposition.length()-1);


        System.out.println(string);


        String fileSuffix = string.substring(string.indexOf("."));
        String newFileName= UUID.randomUUID().toString()+fileSuffix;



//        part.getName();//获取了

//      Collection<String>coll= part.getHeaderNames();
//
//      for(String str: coll){
//
//          System.out.println(str);
//      }

        InputStream inputStream = part.getInputStream();

        OutputStream outputStream = new FileOutputStream(fileLocation+ newFileName);

        byte[] bs = new byte[1024];
        int length=0;
        while ((length=inputStream.read(bs))!=-1){

            outputStream.write(bs,0,length);

        }
        outputStream.flush();
        outputStream.close();

        inputStream.close();

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer= resp.getWriter();
        StringBuffer html = new StringBuffer();
        html.append("<html>").append("<head></head>")
                .append("<body><h1>上传成功</h1>")
                .append("<img src=\""+fileServer+newFileName+"\">")
                .append("<video src=\"" + fileServer + newFileName + "\" width=\"600\" height=\"400\" autoplay>")

                .append("</body></html>");

        writer.write(html.toString());

        writer.flush();
        writer.close();



    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值