android studio上傳視頻保存數據庫 後臺servlet mybatis

android studio / 佈局 在網上搬的磚 代碼加修改。。。

在這裏插入代碼片`

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@color/colorPrimary"
    >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_height="60dp"
        android:layout_marginTop="80dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:text="視頻名稱:"
            android:textColor="#FF8899"
            android:textSize="18dp"/>

        <EditText
            android:id="@+id/upload_video_name"
            android:layout_width="280dp"
            android:layout_height="50dp"
            android:layout_gravity="center_vertical"
            android:hint="請輸入上傳視頻名稱"
            android:layout_marginLeft="5dp"
            android:textSize="18dp"
            />


    </LinearLayout>

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:layout_marginLeft="100dp"
        android:layout_marginRight="100dp"
        android:layout_marginTop="80dp"
        android:text="選擇視頻"
        android:textSize="20sp"/>

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:layout_marginLeft="100dp"
        android:layout_marginRight="100dp"
        android:layout_marginTop="40dp"
        android:text="點擊上傳"
        android:textSize="20sp"/>

    <TextView
        android:id="@+id/post_text"
        android:layout_marginTop="40dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="0" />
    <ProgressBar
        android:id="@+id/post_progress"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100" />
</LinearLayout>

activate… 在activate 點擊上傳的時候 發送兩個請求 一個是上傳視頻,一個是上傳視頻的第一幀 經過壓縮 裏面還有 幾個方法沒有用上 複製上無妨

package wlt.com.sdk;

import androidx.appcompat.app.AppCompatActivity;

import android.accounts.NetworkErrorException;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
import android.util.Log;

import wlt.com.sdk.utils.My_Okhtt3;
import wlt.com.sdk.utils.ProgressListener;

import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;


import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.nio.charset.Charset;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import wlt.com.sdk.utils.HttpUtil;
import wlt.com.sdk.utils.kkk;

public class MainActivity extends AppCompatActivity {

    private Button button, button1;
    private String path = "";//文件路徑
    private ProgressBar post_progress;
    private TextView post_text;

    EditText video_name;

    private String str;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().setTitle("視頻上傳");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        video_name = (EditText) findViewById(R.id.upload_video_name);
        init();
        onclick2();
        onclick();
    }
    //初始化
    public void init() {
        post_progress = (ProgressBar) findViewById(R.id.post_progress);
        post_text = (TextView) findViewById(R.id.post_text);
        button = (Button) this.findViewById(R.id.button);//開始上傳
        button1 = (Button) this.findViewById(R.id.button1);//選擇視頻
    }

//setText
    Handler handler=new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage( Message msg) {

            if (msg.arg1==1){
                video_name.setText(path);
                return true;
            }

            return false;
        }
    });

## // 開始上傳

    public void onclick() {


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (path.equals("")) {

                    Toast.makeText(MainActivity.this, "請選擇視頻後,再點擊上傳!", Toast.LENGTH_LONG).show();

                } else {

                    File file = new File(path);
                    String postUrl = "http://192.168.1.106:8080/img/voideoServlet1";
				//這個是上傳視頻
                    HttpUtil.postFile(postUrl, new ProgressListener() {


                        @Override
                        public void onProgress(long currentBytes, long contentLength, boolean done) {
                            int progress = (int) (currentBytes * 100 / contentLength);
                            post_progress.setProgress(progress);

                            post_text.setText(progress + "%");

                            if (progress==100){
                                Toast.makeText(MainActivity.this,"上傳成功" ,Toast.LENGTH_LONG).show();
                            }
                        }
                    }, new Callback() {
                        @Override
                        public void onFailure(Call call, IOException e) {
                        }
                        @Override
                        public void onResponse(Call call, Response response) throws IOException {
                        }
                    }, file);


                    try {
				
				//這個是上傳圖片kkk.getNetVideoBitmap(path) 通過視頻路徑 返回bitmap kkk.YaSuoImage(bitmap) 壓縮bitmap 返回 file 
                        HttpUtil.postFileimg("http://192.168.1.106:8080/img/and_ImgServlet", new Callback() {
                            @Override
                            public void onFailure(Call call, IOException e) {
                            }

                            @Override
                            public void onResponse(Call call, Response response) throws IOException {

                            }
                        },kkk.YaSuoImage(kkk.getNetVideoBitmap(path)));

                    }catch (Exception e){
                        e.printStackTrace();
                    }

                }

            }
        });


    }

    //打開相冊
    public void onclick2() {
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             seleteVedio();
            }
        });

    }

    public void seleteVedio() {
    
        Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, 66);
    }

  

## /** * 視頻回調 */

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        System.out.println("---onActivityResult-->>");
        if (requestCode == 66 && resultCode == RESULT_OK && null != data) {
            Uri selectedVideo = data.getData();
            String[] filePathColumn = {MediaStore.Video.Media.DATA};

            Cursor cursor = getContentResolver().query(selectedVideo,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            path = cursor.getString(columnIndex);
            System.out.println("----------->>>>"+path);
            Message message=new Message();
            message.arg1=1;
            message.obj=path;
            handler.sendMessage(message);
            cursor.close();
        }
        if (resultCode != MainActivity.RESULT_OK) {
            return;
        }
   
    }
    

  
}

上傳圖片的工具類

package wlt.com.sdk.utils;

import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.os.Environment;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.logging.SimpleFormatter;

/**
 * 獲取視頻第一幀
 */

public class kkk {
    /**
     * 根據視頻地址獲取第一幀
     *
     * @param videoUrl
     * @return
     */
    public static Bitmap getNetVideoBitmap(String videoUrl) {
        Bitmap bitmap = null;

        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {

            //根據url獲取縮略圖
            retriever.setDataSource(videoUrl, new HashMap());
            //獲得第一幀圖片
            bitmap = retriever.getFrameAtTime();

        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } finally {
            retriever.release();
        }
        return bitmap;
    }


    /**
     * 壓縮圖片
     *
     * @param bitmap
     * @return
     */
    public static File YaSuoImage(Bitmap bitmap) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();


        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//質量壓縮方法,這裏100表示不壓縮,把壓縮後的數據存放到baos中
        int options = 100;
        while (baos.toByteArray().length / 1024 > 500) {  //循環判斷如果壓縮後圖片是否大於500kb,大於繼續壓縮
            baos.reset();//重置baos即清空baos
            options -= 10;//每次都減少10
            bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);//這裏壓縮options%,把壓縮後的數據存放到baos中
            long length = baos.toByteArray().length;
        }
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = new Date(System.currentTimeMillis());
        String filename = format.format(date);

        File file = new File(Environment.getExternalStorageDirectory(), filename + ".png");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            try {
                fos.write(baos.toByteArray());
                fos.flush();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        recycleBitmap(bitmap);
        return file;
    }

    public static void recycleBitmap(Bitmap... bitmaps) {
        if (bitmaps == null) {
            return;
        }
        for (Bitmap bm : bitmaps) {
            if (null != bm && !bm.isRecycled()) {
                bm.recycle();
            }
        }
    }

}

okhttpUtils 工具類

package wlt.com.sdk.utils;

import android.accounts.NetworkErrorException;
import android.util.Log;

import java.io.File;
import java.util.concurrent.TimeUnit;

import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class HttpUtil {

    private static OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(10000, TimeUnit.MILLISECONDS)
            .readTimeout(10000, TimeUnit.MILLISECONDS)
            .writeTimeout(10000, TimeUnit.MILLISECONDS).build();
    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8");

    /**
     * 上傳視頻
     * @param url
     * @param listener
     * @param callback
     * @param files
     */
    public static void postFile(String url, final ProgressListener listener, okhttp3.Callback callback, File... files) {

        MultipartBody.Builder builder = new MultipartBody.Builder();
        builder.setType(MultipartBody.FORM);
        Log.i("huang", "files[0].getName()==" + files[0].getName());
        //第一個參數要與Servlet中的一致
        builder.addFormDataPart("myfile", files[0].getName(), RequestBody.create(MediaType.parse("application/octet-stream"), files[0]));

        MultipartBody multipartBody = builder.build();

        Request request = new Request.Builder().url(url).post(new ProgressRequestBody(multipartBody, listener)).build();

        okHttpClient.newCall(request).enqueue(callback);
    }

    /**
     * 上傳圖片
     * @param url
     * @param callback
     * @param files
     */
    private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
    public static void postFileimg(String url, okhttp3.Callback callback, File... files) {
            RequestBody fileBody = RequestBody.create(MEDIA_TYPE_PNG, files[0]);

            RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("ss",files[0].getName(),fileBody)
                   // .addFormDataPart("userName", userName)
                    .build();

            Request request = new Request.Builder()
                    .url(url)
                    .post(requestBody)
                    .build();
        okHttpClient.newCall(request).enqueue(callback);

    }

    /**
     * 下載圖片
     * @param url
     * @param imagePath 圖片路徑
     * @return byte[]
     */
    public static byte[] downloadImage(String url, String imagePath) throws Exception {
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url(url+"/show?fileName="+imagePath)
                .build();
        Response response = okHttpClient.newCall(request).execute();
        byte[] bytes = response.body().bytes();
        return bytes;
    }





}

權限 別忘加權限

以上是是android端 完成 複製代碼可用 下面是servlet

mybatils 使用的是接口方式 接口裏面的方法名是Mapper的id 返回類型也是一樣 傳的參數一樣。。。

jdbc.properties

driverClass=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
user=system
password=wltpas

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
    <typeAliases>
        <package name="wlt.com.vo.Student"/>
    </typeAliases>
    -->
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="system"/>
                <property name="password" value="wltpass"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
          <mapper resource="wlt/video/vo/VideoVo_Mapper.xml" />
             <mapper resource="wlt/video/vo/VideoImg_Mapper.xml" />
    </mappers>
</configuration>

VideoVo_Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="wlt.video.vo.VideoImg_Mapper_Imp">



	<insert id="Insertssutdent" parameterType="wlt.video.vo.VideoImg">

			insert into videoimg (v_imgurl )values( #{v_imgurl})

	</insert>
	
	<select id="SelectAll" resultType="wlt.video.vo.VideoImg">
	
	select * from videoimg
	
	</select>


</mapper>

VideoImg_Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="wlt.video.vo.VideoVo_Mapper_Imp">



	<insert id="Insertssutdent" parameterType="wlt.video.vo.VideoVo">

			insert into video (v_url )values( #{v_url})

	</insert>
	
	<select id="SelectAll" resultType="wlt.video.vo.VideoVo">
	
	select * from video
	
	</select>


</mapper>
  

VideoVo_Mapper_Imp

  
package wlt.video.vo;

import java.util.List;


public interface VideoVo_Mapper_Imp {
	
	void Insertssutdent(VideoVo student);
	List<VideoVo> SelectAll();
}

VideoImg_Mapper_Imp

package wlt.video.vo;

import java.util.List;


public interface VideoImg_Mapper_Imp {
	
	void Insertssutdent(VideoImg student);
	List<VideoImg> SelectAll();
}

接着就差vo
package wlt.video.vo;

import java.io.Serializable;

public class VideoVo implements  Serializable{
	
private String v_url;


public String getV_url() {
	return v_url;
}

public void setV_url(String vUrl) {
	v_url = vUrl;
}

	
}

package wlt.video.vo;

import java.io.Serializable;

public class VideoImg implements  Serializable{
	
private String v_imgurl;

public String getV_imgurl() {
	return v_imgurl;
}

public void setV_imgurl(String vImgurl) {
	v_imgurl = vImgurl;
}


	
}

MybatisUtil

package wlt.video.vo;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {
	private static SqlSessionFactory ssf;
    private static SqlSession ss;
    public static SqlSession getSqlSession(){
        try {
        	Reader in = Resources.getResourceAsReader("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(in);
            ss = ssf.openSession();
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ss;
    }
}

以上 mybatis 完成 servlet 下面

圖片的servlet

package wlt.img.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.ibatis.session.SqlSession;

import wlt.video.vo.VideoImg;
import wlt.video.vo.VideoImg_Mapper_Imp;
import wlt.video.vo.VideoVo_Mapper_Imp;

@SuppressWarnings("serial")
public class and_ImgServlet extends HttpServlet {
	

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		resp.setCharacterEncoding("utf-8");
		 PrintWriter out = resp.getWriter();
		 String url="";
		 SqlSession session=wlt.video.vo.MybatisUtil.getSqlSession();
		 VideoImg_Mapper_Imp imp= session.getMapper(VideoImg_Mapper_Imp.class);
		   
		   
		// 爲解析類提供配置信息
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// 創建解析類的實例
		ServletFileUpload sfu = new ServletFileUpload(factory);
		// 開始解析
		sfu.setFileSizeMax(1024 * 1024 * 5);
		// 每個表單域中數據會封裝到一個對應的FileItem對象上
		
		
		try {
			List<FileItem> items = sfu.parseRequest(req);
			// 區分表單域
			for (int i = 0; i < items.size(); i++) {
				FileItem item = items.get(i);
				// isFormField爲true,表示這不是文件上傳表單域
				if (!item.isFormField()) {
					ServletContext sctx = getServletContext();
					// 獲得存放文件的物理路徑
					// upload下的某個文件夾 得到當前在線的用戶 找到對應的文件夾
					String path = sctx.getRealPath("/upload/images");
					System.out.println(path);
					// 獲得文件名
					String fileName = item.getName();
					 url="http://192.168.1.106:8080/video/images/"+fileName;
					VideoImg v=new VideoImg();
					
					v.setV_imgurl(url);
					
					imp.Insertssutdent(v);
					session.commit();
					System.out.println("添加成功");
					
					//E:\cat\apache-tomcat-6.0.29\webapps\img\images
					
					System.out.println(fileName);
					// 該方法在某些平臺(操作系統),會返回路徑+文件名
					fileName = fileName
							.substring(fileName.lastIndexOf("/") + 1);
					File file = new File(path + "\\" + fileName);
					System.out.println("--->>" + file);
					if (!file.exists()) {
						item.write(file);
						// 將上傳圖片的名字記錄到數據庫中
						System.out.println("----------ok-----...");
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

視頻的servlt

package wlt.img.servlet;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.ibatis.session.SqlSession;

import wlt.video.vo.VideoVo;
import wlt.video.vo.VideoVo_Mapper_Imp;



public class voideoServlet1 extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

			this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		     
		
		String url="";
		   SqlSession session=wlt.video.vo.MybatisUtil.getSqlSession();
		   VideoVo_Mapper_Imp imp= session.getMapper(VideoVo_Mapper_Imp.class);
		    
		    
		   PrintWriter out = response.getWriter();
		   DiskFileItemFactory factory=new DiskFileItemFactory();
		   String upload=this.getServletContext().getRealPath("/upload");
		   System.out.println("--->>:"+upload);
		   factory.setSizeThreshold(1024*1024*5);
		   ServletFileUpload fileUpload=new ServletFileUpload(factory);
		   try {
			List<FileItem> list=fileUpload.parseRequest(request);
			System.out.println("==="+list.size());
			
			for (int i = 0; i < list.size(); i++) {
				FileItem item = list.get(i);
					ServletContext sctx = getServletContext();
					String fileName = item.getName();
					System.out.println(fileName);
					url="http://192.168.1.106:8080/video/"+fileName;
					System.out.println("--url->>"+url);
					VideoVo videoVo=new VideoVo();
					videoVo.setV_url(url);
					imp.Insertssutdent(videoVo);
					session.commit();
					System.out.println("添加session成功");
					
					System.out.println("--url->>");
					
					// 該方法在某些平臺(操作系統),會返回路徑+文件名
					fileName = fileName
							.substring(fileName.lastIndexOf("/") + 1);
					File file = new File(upload + "\\" + fileName);
					System.out.println("--->>" + file.toString());
					if (!file.exists()) {
						try {
							
							item.write(file);
							System.out.println("----------ss-----...");
							//out.print("http://192.168.1.106:8080/img/video/a.mp4");這個是給Androidstudio 返回的
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						
					}
			}
			
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			out.write("no");
		}
		out.flush();
		out.close();
	}

	
	
}

# web.xml


      <servlet>
	<servlet-name>and_ImgServlet</servlet-name>
	<servlet-class>wlt.img.servlet.and_ImgServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
	<servlet-name>and_ImgServlet</servlet-name>
	<url-pattern>/and_ImgServlet</url-pattern>
  </servlet-mapping>


  <servlet>
    <servlet-name>voideoServlet1</servlet-name>
    <servlet-class>wlt.img.servlet.voideoServlet1</servlet-class>
  </servlet>
   <servlet-mapping>
	<servlet-name>voideoServlet1</servlet-name>
	<url-pattern>/voideoServlet1</url-pattern>
  </servlet-mapping>

## 最後就是tomcat 打開 server.xml
添加  可以理解取個別名
<Context docBase="E:\cat\apache-tomcat-6.0.29\webapps\img\upload" path="/video" reloadable="true"/>

url="http://192.168.1.106:8080/video/"+fileName; 

這個video==E:\cat\apache-tomcat-6.0.29\webapps\img\upload 這個路徑
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/202002231338380.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjE4MzA3,size_16,color_FFFFFF,t_70)

## 想一想 ok 能用到 你懂得

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章