精华内容
下载资源
问答
  • 主要介绍了Python SELENIUM上传文件或图片实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了微信小程序实现上传图片裁剪图片过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了javascript实现图片伪异步上传过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Django 实现图片上传和显示过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢?   下面说一下我的实现过程(只是个人实现思路,实际网站怎...

    题外话:推荐一个专注于Java开发的网站,做提升学习,价值阅读:Java知音

    同时,扫码关注后端技术精选,回复“学习资料”,领取100套小程序源码+小程序开发视频和基本Java经典书籍电子版


    在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢?

     

    下面说一下我的实现过程(只是个人实现思路,实际网站怎么实现的不太清楚)

    实现的思路:

    工具:MySQL,eclipse

    首先,在MySQL中创建了两个表,一个t_user表,用来存放用户名,密码等个人信息,

    一个t_touxiang表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID,

    T_touxiang表中的用户ID对应了t_user中的id。

     

    t_user表SQL:

    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `username` varchar(20) NOT NULL,
      `password` varchar(255) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`)
    ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
    

     

    T_touxiang表SQL:

     

    DROP TABLE IF EXISTS `t_touxiang`;
    CREATE TABLE `t_touxiang` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `image_path` varchar(255) DEFAULT NULL,
      `user_id` int(11) DEFAULT NULL,
      `old_name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `img_user` (`user_id`),
      CONSTRAINT `img_user` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    

     

    首先,写一个UploadServlet.java,用来处理图片文件的上传,并将图片路径,图片名称等信息存放到t_touxiang数据表中,代码如下:

     

    @WebServlet("/UploadServlet.do")
    public class UploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void service(HttpServletRequest request, HttpServletResponse response)
    	    throws ServletException, IOException {
    	// 判断上传表单是否为multipart/form-data类型
    	HttpSession session = request.getSession();
    	User user = (User) session.getAttribute("user"); // 在登录时将 User 对象放入了 会话
    							 // 中
    
    	if (ServletFileUpload.isMultipartContent(request)) {
    
    	    try {
    		// 1. 创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    		// System.out.println(System.getProperty("java.io.tmpdir"));//默认临时文件夹
    
    		// 2. 创建ServletFileUpload对象,并设置上传文件的大小限制。
    		ServletFileUpload sfu = new ServletFileUpload(factory);
    		sfu.setSizeMax(10 * 1024 * 1024);// 以byte为单位 不能超过10M 1024byte =
    						 // 1kb 1024kb=1M 1024M = 1G
    		sfu.setHeaderEncoding("utf-8");
    
    		// 3.
    		// 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象。
    		@SuppressWarnings("unchecked")
    		List<FileItem> fileItemList = sfu.parseRequest(request);
    		Iterator<FileItem> fileItems = fileItemList.iterator();
    
    		// 4. 遍历list,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件
    		while (fileItems.hasNext()) {
    		    FileItem fileItem = fileItems.next();
    		    // 普通表单元素
    		    if (fileItem.isFormField()) {
    			String name = fileItem.getFieldName();// name属性值
    			String value = fileItem.getString("utf-8");// name对应的value值
    
    			System.out.println(name + " = " + value);
    		    }
    		    // <input type="file">的上传文件的元素
    		    else {
    			String fileName = fileItem.getName();// 文件名称
    			System.out.println("原文件名:" + fileName);// Koala.jpg
    
    			String suffix = fileName.substring(fileName.lastIndexOf('.'));
    			System.out.println("扩展名:" + suffix);// .jpg
    
    			// 新文件名(唯一)
    			String newFileName = new Date().getTime() + suffix;
    			System.out.println("新文件名:" + newFileName);// image\1478509873038.jpg
    
    			// 5. 调用FileItem的write()方法,写入文件
    			File file = new File("D:/lindaProjects/mySpace/wendao/WebContent/touxiang/" + newFileName);
    			System.out.println(file.getAbsolutePath());
    			fileItem.write(file);
    
    			// 6. 调用FileItem的delete()方法,删除临时文件
    			fileItem.delete();
    
    			/*
    			 * 存储到数据库时注意 1.保存源文件名称 Koala.jpg 2.保存相对路径
    			 * image/1478509873038.jpg
    			 * 
    			 */
    			if (user != null) {
    			    int myid = user.getId();
    			    String SQL = "INSERT INTO t_touxiang(image_path,user_id,old_name)VALUES(?,?,?)";
    			    int rows = JdbcHelper.insert(SQL, false, "touxiang/" + newFileName, myid, fileName);
    			    if (rows > 0) {
    				session.setAttribute("image_name", fileName);
    				session.setAttribute("image_path", "touxiang/" + newFileName);
    				response.sendRedirect(request.getContextPath() + "/upImage.html");
    			    } else {
    
    			    }
    
    			} else {
    			    session.setAttribute("loginFail", "请登录");
    			    response.sendRedirect(request.getContextPath() + "/login.html");
    			}
    
    		    }
    		}
    
    	    } catch (FileUploadException e) {
    		e.printStackTrace();
    	    } catch (Exception e) {
    		e.printStackTrace();
    	    }
    
    	}
        }
    }
    

     

    在完成图片上传并写入数据库的同时,将图片路径通过session的方式发送到HTML界面

     

     

    <!DOCTYPE html>
    
    <html>
    
    <head>
    
    <meta charset="UTF-8">
    
    <title>更换头像</title>
    
    </head>
    
    <body>
    
             <formaction="UploadServlet.do" method="post"enctype="multipart/form-data">
    
                         本地目录:<inputtype="file" name="uploadFile">
    
               <img src="${image_path}" width="200" height="200">
    
                    <inputtype="submit" value="上传头像"/>
    
       </form>
    
    </body>
    
    </html>

     

    至此,图片上传数据库和本地服务器已经实现,那么如何在HTML界面显示出个人信息以及上传的头像呢?

     

     

    首先定义一个PersonServlet类,用来读取数据库的内容,并发送到HTML界面。

    代码如下:

    @WebServlet("/persons.do")
    public class PersonServlet extends HttpServlet {
    
        private static final long serialVersionUID = -800352785988546254L;
    
        protected void service(HttpServletRequest request, HttpServletResponse response)
    	    throws ServletException, IOException {
    	// 判断上传表单是否为multipart/form-data类型
    	Touxiang tx=null;
    	
    	HttpSession session = request.getSession();
    	User user = (User) session.getAttribute("user"); // 在登录时将 User 对象放入了 会话
    	if(user!=null){
    	    int myid=user.getId();
    	    String SQL="SELECT id,image_path,old_name FROM t_touxiang WHERE user_id=?";
    	    ResultSet rs=JdbcHelper.query(SQL,myid);
    	    String uSQL="SELECT username,password FROM t_user WHERE id=?";
    	    ResultSet urs=JdbcHelper.query(uSQL,myid);
    	    System.out.println( "我的个人id是: " + myid);
    	    final List<Touxiang> touxiang=new ArrayList<>();
    	    try {
    		if(rs.next())
    		{
    		    tx=new Touxiang();
    		    tx.setId(rs.getInt(1));
    		    tx.setImage_path(rs.getString(2));
    		    tx.setOld_name(rs.getString(3));
    		    touxiang.add(tx);
    		}
    		if(urs.next()){
    		    user.setUsername(urs.getString(1));
    		    user.setPassword(urs.getString(2));
    		    user.setTouxiang(touxiang);
    		}
    		
    	    } catch (SQLException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	    }
    	   
    		session.setAttribute("user", user);
    		System.out.println( "我的id: " + myid);
    		response.sendRedirect( request.getContextPath() + "/person.html");
    	}
        }
    }
    

     

    在HTML界面接收信息,并显示出来,代码如下:

     

    <div>
    	<form action="UploadServlet.do" method="post" enctype="multipart/form-data">
          		 <div><a href="$path/upImage.html">更换头像</a></div>
            	
            	#foreach( $ut in  $user.getTouxiang() )
            	 <img src=" $ut.getImage_path()"  width="200" height="200">
            	 #end
            	 <div>我的头像:</div>
            	 <div>我的姓名:$user.getUsername()</div>
            	 <div><a href="$path/myAnswer.do">我的解答</a></div>
    		<div><a href="$path/myQuestion.do">我的提问</a></div>
       	 </form>
    	</div>
    <div>
    	<form action="UploadServlet.do" method="post" enctype="multipart/form-data">
          		 <div><a href="$path/upImage.html">更换头像</a></div>
            	
            	#foreach( $ut in  $user.getTouxiang() )
            	 <img src=" $ut.getImage_path()"  width="200" height="200">
            	 #end
            	 <div>我的头像:</div>
            	 <div>我的姓名:$user.getUsername()</div>
            	 <div><a href="$path/myAnswer.do">我的解答</a></div>
    		<div><a href="$path/myQuestion.do">我的提问</a></div>
       	 </form>
    	</div>

     

    至此,一个基于Java的头像上传服务器,路径存储在MySQL,并在HTML界面读取出来的功能就基本实现了。头像上传之前进行处理等操作,可以选择一些插件来完成。这里只是简单的实现了基本功能。

     

     

    补充

    对于图片上传,这里只是简单的用Servlet实现了一下最基本的功能,仅提供思路。如果使用spring等框架,他都对图片上传做了很好的封装,应该更加容易。

    后台实现图片上传应该来说比较容易,但是比较头疼的是图片上传原生的按钮丑出天际,这里推荐俩实用的上传控件,应该算比较好看。

     

    1,H5实现的图片上传,可多张上传,可点击可拖拽上传,大概是这个样子:

    基本的使用介绍和下载地址:http://blog.csdn.net/weixin_36380516/article/details/70352689

     

    2,jQuery图像裁剪插件,大概长这样

     

    不仅提供上传,还有裁剪等功能,UI做的也美,

    地址:http://www.jq22.com/jquery-info318

     

    展开全文
  • 主要介绍了Jmeter post上传文件实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 在开发过程中我们经常要遇到需要像服务器上传文件的操作,那么Django是怎么实现文件上传的功能呢,下面我们先来实现个最简单的文件上传功能,详细的讲解下Django整个文件上传实现过程。 建立模型 在model.py中...

    目录

    建立模型

    定义视图 

    配置路由

    postman接口测试

     查看服务器及数据库变化

     文件如何上传


         在开发过程中我们经常要遇到需要像服务器上传文件的操作,那么Django是怎么实现文件上传的功能呢,下面我们先来实现个最简单的文件上传功能,详细的讲解下Django整个文件上传实现的过程。

    建立模型

    在model.py中设计文件模型机构,这里为了简单我就定义了一个file字段,类型为FileField,通过参数upload_to指定上传文件的保存目录,这里我们直接用'./upload'定义了此目录所以不需要提前建立,在迁移数据库时会自动在项目目录下创建对应的文件夹。

    class File(models.Model):
        file = models.FileField(upload_to='./upload')
    
        def __str__(self):
            return self.file
    
        class Meta:
            db_table = 'file' #数据库后显示的model名称               

    当然你也可以通过在settings.py里设置MEDIA_ROOT,来代替upload_to参数,MEDIA_ROOT:#指定文件上传存储目录,这样使用FileField字段时,就不用设置upload_to参数了,在settings.py设置:

    # 设置浏览器访问路径
    MEDIA_URL = '/upload/'
    # 指定文件上传存储目录
    MEDIA_ROOT = os.path.join(BASE_DIR, 'upload')

     执行迁移命令,同步至数据库:

    Python manage.py makemigrations 
    python manage.py migrate

    定义视图 

    迁移完数据库我们开始定义视图,这里我们通过request.FILES.get()方法来获取我们的文件对象,这里需要像服务器提交数据,所以我们用POST方法来实现,然后将文件路径存入数据库中。

    def uploadfile(request):
        if request.method == "POST":
            fileName = request.FILES.get('filename') # 获取前台传来的文件对象
            models.File.objects.update_or_create(file=fileName)

    配置路由

    为视图配置访问路由,我定义了一个upload,我们只要访问http://127.0.0.1:8000/upload/就可以找到对应的路由了,因为这是POST请求接口,需要携带数据进行接口访问,不然就会报错。

    from django.conf.urls import url
    from user import views
    
    urlpatterns = [
        url(r'^login/$',views.login),
        url(r'^register/$',views.register),
        url(r'^upload/$',views.uploadfile)
    ]

    postman接口测试

    通过postman模拟POST请求来测试该接口,我们提交一个文件类型的参数进行POST访问,这里我传了一个文件名为1.png的图片文件,传输形式为form-data。

     查看服务器及数据库变化

    首先我们来看下数据库中是怎么存储的,我们可以看到再说数据库中,文件是以相对路径+文件名的形式存储的,而在项目目录中我们可以看到有个upload目录,里面存储了一个名为1.png的文件,这就是我们刚才上传的文件。

     文件如何上传

    这个过程中Django自动为我们实现了文件存储的操作,想深层的了解如何上传的话可以了解下如何读写文件,直接用python的open方法进行文件读写操作就可以实现。

    fileName = request.FILES.get('filename')
    read=open(os.path.join('./upload',fileName.name),'wb+')# 二进制打开文件进行写操作  
    for chunk in fileName.chunks():
        read.write(chunk)  # 写入文件
    read.close()

     

    展开全文
  • 主要介绍了Java上传文件到服务器指定文件夹实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 通过JSP实现 图片上传

    2018-04-04 16:25:52
    包括上传需要的ajaxfileupload.js 插件,上传页面,上传的处理过程,相关数据的存储,图片上传
  • 基于http协议,图片上传 后端实现。 前端以html做例子,后端 采用 asp.net实现图片上传接口。已经在 各类项目中使用过。如有需要,请下载。
  • 这里给出 三种方式的统一实现 下面先给出各种方式的文件提交页面: 单个文件上传 upload1.php 单文件上传 请选择您要上传的文件: 多个单文件上传 upload2.php 多个单文件上传

    上回提到 PHP的单个文件上传、多个单文件上传、多文件上传

    这里给出 三种方式的统一实现

    下面先给出各种方式的文件提交页面:

    单个文件上传 upload1.php

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>单文件上传</title>
    </head>
    <body>
        <form action="doAction5.php" method="post" enctype="multipart/form-data">
            请选择您要上传的文件:
            <input type="file" name="myFile"/><br/>
            <input type="submit" value="上传文件"/>
        </form>
    </body>
    </html>
    

    多个单文件上传 upload2.php

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>多个单文件上传</title>
    </head>
    <body>
        <form action="doAction5.php" method="post" enctype="multipart/form-data">
            请选择您要上传的文件:<input type="file" name="myFile1"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile2"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile3"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile4"/><br/>
            <input type="submit" value="上传文件"/>
        </form>
    </body>
    </html>
    

    多文件上传 upload3.php

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>多文件上传</title>
    </head>
    <body>
        <form action="doAction5.php" method="post" enctype="multipart/form-data">
            请选择您要上传的文件:<input type="file" name="myFile[]"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile[]"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile[]"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile[]"/><br/>
            <input type="submit" value="上传文件"/>
        </form>
    </body>
    </html>
    
    混合方式文件上传 upload4.php

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>混合方式文件上传</title>
    </head>
    <body>
        <form action="doAction5.php" method="post" enctype="multipart/form-data">
            请选择您要上传的文件:<input type="file" name="myFile1"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile2"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile[]"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile[]"/><br/>
            请选择您要上传的文件:<input type="file" name="myFile[]" multiple="multiple"/><br/>
            <input type="submit" value="上传文件"/>
        </form>
    </body>
    </html>
    

    文件上传处理 doAction5.php

    <?php
    /**
     * Created by PhpStorm.
     * User: DreamBoy
     * Date: 2016/4/8
     * Time: 21:39
     */
    header('content-type:text/html;charset=utf-8');
    include_once 'upload.func.php';
    
    $files = getFiles();
    //print_r($files);
    
    foreach($files as $fileInfo) {
        $res = uploadFile($fileInfo);
        echo $res['mes'],'<br/>';
    
        if(isset($res['dest'])) {
            $uploadFiles[] = $res['dest'];
        }
    }
    //过滤掉上传失败的文件
    /**
     * array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。
     * 提示:被返回的数组将使用数值键,从 0 开始并以 1 递增。
     */
    /**
     * array_filter() 函数用回调函数过滤数组中的值。
     * 该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,
     * 则把输入数组中的当前键值返回结果数组中。数组键名保持不变。
     */
    //这里使用array_filter过滤掉数组中的空内容
    if(isset($uploadFiles)) {
        $uploadFiles=array_filter($uploadFiles);
    
        print_r($uploadFiles);
    }


    实现文件上传的函数 upload.func.php

    <?php
    /**
     * Created by PhpStorm.
     * User: DreamBoy
     * Date: 2016/4/8
     * Time: 21:41
     */
    /**
     * 构建上传文件信息
     * @return mixed
     */
    function getFiles() {
        $i = 0;
        foreach($_FILES as $file) {
            //单文件或者多个单文件上传
            if(is_string($file['name'])) {
                $files[$i] = $file;
                $i++;
            } //多文件上传
            elseif(is_array($file['name'])) {
                foreach($file['name'] as $key=>$val) {
                    $files[$i]['name'] = $file['name'][$key];
                    $files[$i]['type'] = $file['type'][$key];
                    $files[$i]['tmp_name'] = $file['tmp_name'][$key];
                    $files[$i]['error'] = $file['error'][$key];
                    $files[$i]['size'] = $file['size'][$key];
                    $i++;
                }
            }
        }
        return $files;
    }
    
    /**
     * 获取文件扩展名
     */
    function getExt($filename) {
        return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
    }
    
    /**
     * 获取唯一字符串
     */
    function getUniName() {
        return md5(uniqid(microtime(true), true));
    }
    
    /**
     * 针对于单文件、多个单文件、多文件的上传
     * @param array $fileInfo
     * @param string $path
     * @param bool $flag
     * @param int $maxSize
     * @param array $allowExt
     * @return array
     */
    function uploadFile($fileInfo, $path='./uploads',$flag=true,$maxSize=1048576,$allowExt = array('jpeg','jpg','gif','png')) {
        //$allowExt = array('jpeg','jpg','gif','png');
        //$flag = true;
        //$maxSize = 1048576; //1M
    
        $res = array();
    
        //判断错误号
        if($fileInfo['error'] == UPLOAD_ERR_OK) {
            //检测上传文件的大小
            if($fileInfo['size'] > $maxSize) {
                $res['mes'] = $fileInfo['name'] . '上传文件过大';
            }
    
            $ext = getExt($fileInfo['name']);
            //检测上传文件的文件类型
            if(!in_array($ext, $allowExt)) {
                $res['mes'] = $fileInfo['name'] . '非法文件类型';
            }
    
            //检测是否是真是的图片类型
            if($flag) {
                if(!getimagesize($fileInfo['tmp_name'])) {
                    $res['mes'] = $fileInfo['name'] . '不是真实图片类型';
                }
            }
    
            //检测文件是否是通过HTTP POST上传上来的
            if(!is_uploaded_file($fileInfo['tmp_name'])) {
                $res['mes'] = $fileInfo['name'] . '文件不是通过HTTP POST方式上传上来的';
            }
    
            if($res) return $res;
    
            //$path = './uploads';
            if(!file_exists($path)) {
                mkdir($path, 0777, true);
                chmod($path, 0777);
            }
            $uniName = getUniName();
            $destination = $path . '/' . $uniName . '.' . $ext;
            if(!move_uploaded_file($fileInfo['tmp_name'],$destination)) {
                $res['mes'] = $fileInfo['name'] . '文件移动失败';
            }
    
            $res['mes'] = $fileInfo['name'] . '上传成功';
            $res['dest'] = $destination;
    
            return $res;
        } else {
            //匹配错误信息
            switch($fileInfo['error']) {
                case 1:
                    $res['mes'] = '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
                    break;
                case 2:
                    $res['mes'] = '超过了表单MAX_FILE_SIZE限制的大小';
                    break;
                case 3:
                    $res['mes'] = '文件部分被上传';
                    break;
                case 4:
                    $res['mes'] = '没有选择上传文件';
                    break;
                case 6:
                    $res['mes'] = '没有找到临时目录';
                    break;
                case 7:
                case 8:
                    $res['mes'] = '系统错误';
                    break;
            }
            return $res;
        }
    }




    展开全文
  • 图片上传功能的实现

    千次阅读 2017-04-29 14:47:51
    图片上传功能上一篇中,我们了解了图片上传过程中的预览功能,本篇我们着重实现图片功能,以上传图片为例,同样适用于上传文件等。

    图片上传功能

    上一篇中,我们了解了图片上传过程中的预览功能,本篇我们着重实现图片功能,以上传图片为例,同样适用于上传文件等。

    1. jsp页面的编写:
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>上传图片</title>
    <script type="text/javascript" src="js/upload.js"></script>
    </head>
    <body>
        <h1>上传图片完整例子</h1>
        <form action="../UploadServlet" method="post" enctype="multipart/form-data">
        名称:<input type="text" name="name"><br>
        图片:<input type="file" name="image" onchange="previewImage(this,'imgPreviewId')"><br>
        <img alt="" src="" name="srcImage" id="imgPreviewId" width="120px;" height="120px;">
        <input type="submit" value="提交"> 
        </form>
    </body>
    </html>

    同样引入upload.js实现图片上传的预览功能

    2.. 页面运行效果如下:
    这里写图片描述

    3.编写uploadservlet

    package cn.com.mp.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.com.mp.utils.HttpUtil;
    
    @MultipartConfig
    @WebServlet(urlPatterns = "/UploadServlet", initParams = {
            @WebInitParam(name = "path", value = "D:/apache-tomcat-8.0.24/webapps/UploadDemo/page/image") })
    public class UploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public UploadServlet() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
    
            String name = request.getParameter("name");
            // 上传图片
            String fileName = "";
            String path = this.getInitParameter("path");
            fileName = HttpUtil.upload(request, "image", path);
    
            System.out.println(name + "==" + fileName);
    
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    

    注意:与普通servlet的不同点,上传图片的servlet需要使用
    @WebServlet(urlPatterns = “/UploadServlet”, initParams = {
    @WebInitParam(name = “path”, value = “D:/apache-tomcat-8.0.24/webapps/UploadDemo/page/image”) })
    使用urlPatterns 指明:servlet的访问路径
    使用@WebInitParam指明上传图片的保存路径,其中包括name ,value
    同时需要使用@MultipartConfig支持使用servlet3.0 part新特性

    4.编写上传图片的工具类
    
    package cn.com.mp.utils;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.Part;
    
    public class HttpUtil {
    
        public static String upload(HttpServletRequest request, String name, String upload_path)
                throws IOException, ServletException {
            // 获得文件路径和文件名
            String fileName = "";
    
            Part part = request.getPart(name);
            if (part != null) {
                String realName = part.getSubmittedFileName();
                System.out.println(realName+"====realName");
                fileName = FileHelper.generateFileName(realName);
    
                // 执行文件上传
                if (!realName.equals("")) {
                    File file = new File(upload_path, fileName);
                    if (!file.exists()) {
                        file.createNewFile();
                    }
                    InputStream in = part.getInputStream();
                    FileOutputStream out = new FileOutputStream(file);
                    byte[] cache = new byte[256];
                    int length = 0;
                    while ((length = in.read(cache)) != -1) {
                        out.write(cache, 0, length);
                    }
                    out.flush();
                    if (out != null) {
                        out.close();
                    }
                    if (in != null) {
                        in.close();
                    }
    
                }
    
            }
    
            return fileName;
    
        }
    
    }
    
    1. 编写fileName文件生成名的产生工具类(后期保存数据库时,需要保存此值)
    package cn.com.mp.utils;
    
    import java.text.DateFormat;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Random;
    
    public final class FileHelper {
        public static String getRealFileName(String fileName){
            int start = fileName.lastIndexOf("\\");  
            String value ="";
            if(start>0){
                value = fileName.substring(start+1);
            }else{
                value = fileName;
            }
    
            return value;
        }
        public static String generateFileName(String fileName) {
            DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
            String formatDate = format.format(new Date());
            int random = new Random().nextInt(10000);
            int position = fileName.lastIndexOf(".");
            String extension = fileName.substring(position);
    
            return formatDate + random + extension;
        }
    
        public static String FormetFileSize(long fileS) {
            DecimalFormat df = new DecimalFormat("#.00");
            String fileSizeString = "";
            if (fileS < 1024) {
                fileSizeString = df.format((double) fileS) + "B";
            } else if (fileS < 1048576) {
                fileSizeString = df.format((double) fileS / 1024) + "KB";
            } else if (fileS < 1073741824) {
                fileSizeString = df.format((double) fileS / 1048576) + "MB";
            } else {
                fileSizeString = df.format((double) fileS / 1073741824) + "GB";
            }
            return fileSizeString;
        }
    }
    

    6.运行效果:
    这里写图片描述

    提交上传控制台结果如下:
    这里写图片描述

    7.结果:
    在servlet自定义图片的保存目录下寻找201704291440543396.jpg图片
    这里写图片描述
    确实是存在这样的一张照片,至此说明图片上传的功能我们已经完成。

    8.总结:
    本片中我们使用了servlet3.0的新特性Part支持编写了图片上传功能,关于Part的更多信息请参考一下地址:
    servlet3.0 part
    完整例子下载:UploadDemo
    欢迎大家评论指教!

    展开全文
  • uni-app实现图片上传和裁剪

    万次阅读 热门讨论 2019-09-02 19:45:20
    uni-app实现图片上传和裁剪 uni-app 实现图片上传和裁剪,插件市场上已经有作者提供了相关的插件。这里主要介绍下我在自己开发图片上传和裁剪过程中遇到的一些问题。 图片上传 图片上传功能比较简单,uni-app...
  • 图片和文件上传的前端实现,包含:html、js、css文件等。
  • 移动端 实现图片上传

    千次阅读 2019-04-30 15:25:07
    需求 公司现在在移动端使用webuploader实现图片上传,但最近需求太奇葩了,插件无法满足我们的PM ...上传图片这块有几个知识点要先了解的。首先是有几种常见的移动端图片上传方式: FormData 通过Fo...
  • 上传图片时即时显示图片效果,这在项目开发中时很常见的一项功能,接下来介绍此功能的实现过程,有需要的朋友可以参考下
  • 通过java的sdk实现源文件云储存业务场景对腾讯云存储桶的理解开发过程 业务场景 系统中实现上传数据报表excel,由于业务场景比较的频繁,项目应用的服务器上不对原始文件进行保存,解析完毕之后数据持久化到数据库中...
  • Retrofit2实现图片文字上传

    万次阅读 热门讨论 2018-07-22 16:39:14
    3.4、实现上传 附:UploadHelper.java源码 前言 距离上一篇文章到现在已经有将近半年的时间了,因为换了一座城市,到现在才算是刚刚熟悉起来吧,所以这段时间一直没能静下心来去总结,今天是周末...
  • Ajax实现图片上传到服务器

    千次阅读 2018-12-12 23:38:24
    上一篇文章讲解的是,利用form表单的形式将图片发送给服务器,还讲解了...其实很简单,form表单形式上传图片是设置form表单enctype="multipart/form-data" 而ajax就是监听input的change事件时,获取到文件...
  • Flask实现图片上传、下载及展示

    万次阅读 多人点赞 2018-05-17 10:45:13
    首先,实现一个简单的上传过程中未做任何处理,只是为了演示) 点击选择图片,输入李四: HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> ...
  • 最近几天正在做一个小型CMS,用到图片上传了,想利于CodeIgniter的上传类去实现,但测试中有好多问题,我把经过和要注意的地方分享一下!复制代码 代码如下:<?php echo form_open_multipart(‘picture/upload’);?>...
  • 小程序云开发实现上传图片功能

    万次阅读 多人点赞 2019-04-04 18:53:29
    1、小程序上传图片功能实现需要注意以下几个点: (1)图片最多上传9张(默认) (2)上传后的图片会生成一个临时的地址,用过这个临时地址将图片上传到数据库 (3)图片保存的位置是在云开发控制台的 本地存储中 ...
  • bootstrap upload 文件上传实现过程

    万次阅读 2017-06-12 16:46:03
    controller的实现部分 /** * * @Title : uploadFj * @Description : TODO(上传附件) * @param request */ @RequestMapping (value = "/uploadFj" ) public void uploadFj ...
  • 简单说下Summernote的图片上传功能实现方案 首先根据官方文档提供的API,挂接文件上传事件,然后自己用JS重新上传文件,最后用API把图片插入到编辑框内即可 本来是挺简单的问题,可惜官方也不知道为什么居然更改了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,416
精华内容 46,566
关键字:

上传图片过程是怎么实现的