资讯专栏INFORMATION COLUMN

java Web开发实现手机拍照上传到服务器

only_do / 2743人阅读

摘要:第一步搭环境基本我们要清楚自己的版本。因为我们配置的成功的前提是版本相对应。解压缩都随便一个盘都行,下图是我的路径配置相关环境变量,由于本人之前已经配置了开发时环境,即。这个显示上传状态与后面在中有定义。

第一步:

 
  搭环境,基本jdk 1.6+apache tomcat6.0+myeclipse2014
1.我们要清楚自己的jdk版本。因为我们Apache Tomcat配置的成功的前提是版本相对应。
安装jdk1.6是由于myeclipse中新建webproject时,有可能只有1.6和1.7两个选项,不过不同的myeclipse版本应该不同,如下图:

具体安装的jdk的过程和环境变量的设置就百度一下,教程很多,安装好了之后,查看一下版本,如下图:

2.安装apache tomcat6.0,推荐安装压缩版,下载之后直接解压缩,然后设置一下环境变量就可以用了。
解压缩都随便一个盘都行,下图是我的路径:

5.配置相关环境变量,由于本人之前已经配置了Java开发时环境,即JDK。因此JAVA_HOME就不必再配置了
1)环境变量1:CATALINA_HOME,环境变量值:F: omcat-6.0.35
(环境变量值即为相应ZIP文件解压目录)
2)环境变量2:CATALINA_BASE,环境变量值:F: omcat-6.0.35
(与CATALINA相同)
3)环境变量2:TOMCAT_HOME,环境变量值:F: omcat-6.0.35
(与CATALINA相同)
4)环境变量3:CALSSPATH,修改环境变量值,在其后加上:%CATALINA_HOME%libservlet-api.jar;
5)环境变量4:PATH,修改环境变量值,在其后加上:%CATALINA_HOME%libservlet-api.jar;
图片展示:

环境变量设置好了之后,需要修改一些tomcat的配置信息,路径:F: omcat-6.0.35confserver.xml如何跟下图一样的,可以不用修改:

上面的东西全部配置完成之后,可以启动一下tomcat,看是否配置成功,双击 F: omcat-6.0.35in目录下的startup.bat:

这样就显示配置成功了,然后我们可以访问一下tomcat自带的例子,打开浏览器输入localhost:80/index.html,80是端口号,可自行修改,如何没有修改过,则是8080,如下图所示:

3.安装myeclipse 2014,安装过程很简单,只分享一下安装包和破解包,破解包中自带破解教程,百度云链接https://pan.baidu.com/s/1c13JSdE 密码:3ji7

安装与破解完成之后,首先将myeclipse的编码格式改为UTF-8国际编码。
window->perferences 如图:

由于myeclipse不会自动导入你配置好的jdk,需要手动配置,因为没有什么特殊的,直接百度配置教程:http://jingyan.baidu.com/arti...

myeclipse中配置tomcat和如何启动的教程也比较多,也好找,链接:http://jingyan.baidu.com/arti...
这是我配置好了后

点击上图中圆圈圈起来的图标,启动你自己导入的tomcat,然后矩形框是用来将你创建的web project映射到F: omcat-6.0.35webapps目录下

新建一个web project


...]

然后映射到webapps目录下:

然后开始写代码:
首先将index.jsp的编码格式设置为UTF-8

然后导入jsp-api.jar,这个包在

index.jsp中的主要代码为
form 中action的值为与后面建立的servlet/JSP mapping URL一致,可以先建立了servlet再来修改这个值。
${result}这个显示上传状态,与后面在SmartUpload.java中有定义。
showPreView(this)方法是用来预览图片的。




${result}

新建servlet

建立成功了之后,可以看到web.xml中的一些自动配置好的信息:

SmartUpload.java

package com.upload;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.io.RandomAccessFile;
import java.text.SimpleDateFormat;
import java.util.Date;


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



public class SmartUpload extends HttpServlet {

     // 定义允许上传的文件扩展名
    private String Ext_Name = "gif,jpg,jpeg,png,bmp,swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2";
    //显示上传文件的结果
    private String result=null;
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doPost(req,resp);
        
    }

    
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //获取上传文件流
        InputStream fileSource=req.getInputStream();
        //设置临时文件名
        String tempFileName="F:/tempFile";
        File tempFile=new File(tempFileName);
        //文件输出流,将上传的文件写入按字节流临时文件
        FileOutputStream outputStream=new FileOutputStream(tempFile);
        byte b[]=new byte[1024];
        int n;
        while((n=fileSource.read(b))!=-1){
            outputStream.write(b,0,n);
        }
        outputStream.close();
        fileSource.close();
        //创建文件随机流,读取临时文件
        RandomAccessFile randomFile=new RandomAccessFile(tempFile,"r");
        //第一行的垃圾数据不需要
        randomFile.readLine();
        //在第二行中获取文件后缀名
        String str=randomFile.readLine();
        //获取文件后缀名
        String fileExt=str.substring(str.indexOf(".")+1,str.lastIndexOf(""")).toLowerCase();
         // 检查扩展名
        // 如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
        System.out.println("上传的文件的扩展名是:" + fileExt);
        if(!Ext_Name.contains(fileExt)){
            System.out.println("上传文件扩展名是不允许的扩展名:" + fileExt);
           result = result + "上传文件扩展名是不允许的扩展名:" + fileExt + "
"; randomFile.close(); RequestDispatcher dispatcher=req.getRequestDispatcher("index.jsp"); dispatcher.forward(req, resp); return; } //得到保存文件的名字 String filename=makeFileName(fileExt); //重新定位文件指针到文件头 randomFile.seek(0); long startPosition=0; int i=1; while((n=randomFile.readByte())!=-1&&i<=4){ if(n==" "){ startPosition=randomFile.getFilePointer(); i++; } } //startPosition=startPosition-1; //获取文件内容结束位置 randomFile.seek(randomFile.length()); long endPosition=randomFile.getFilePointer(); int j=1; while(endPosition>=0&&j<=2){ endPosition--; randomFile.seek(endPosition); if(randomFile.readByte()==" "){ j++; } } endPosition=endPosition-1; String savePath="F:/images"; File fileupload=new File(savePath); if(!fileupload.exists()){ fileupload.mkdir(); } //新建文件和文件名字 File saveFile=new File(savePath,filename); RandomAccessFile randomAccessFile=new RandomAccessFile(saveFile,"rw"); //从临时文件的当中读取文件内容 randomFile.seek(startPosition); while(startPosition

上传图片的页面效果:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87177.html

相关文章

  • java Web开发实现手机拍照上传务器

    摘要:第一步搭环境基本我们要清楚自己的版本。因为我们配置的成功的前提是版本相对应。解压缩都随便一个盘都行,下图是我的路径配置相关环境变量,由于本人之前已经配置了开发时环境,即。这个显示上传状态与后面在中有定义。 第一步: 搭环境,基本jdk 1.6+apache tomcat6.0+myeclipse2014 1.我们要清楚自己的jdk版本。因为我们Apache Tomcat配置的成...

    Towers 评论0 收藏0
  • 关于手机拍照上传图片的问题

    摘要:关于移动端拍照上传图片的解决方案场景产品要求用户拍一张身份证和一张人像,然后后台调用商用接口比对证件和人像的匹配度。缺点手机拍照图片过大,压缩后,图片依然大,没上传一次花费时间过长,最后再调用接口比对时间花费也长。 关于移动端拍照上传图片的解决方案 场景 产品要求用户拍一张身份证和一张人像,然后后台php调用商用接口比对证件和人像的匹配度。showImg(https://segment...

    jifei 评论0 收藏0
  • 微信JSSDK 实现打开摄像头拍照再将相片保存务器

    摘要:在微信端打开手机摄像头拍照,将拍照图片保存到服务器上需要使用到微信的接口,主要使用到了拍照或从手机相册中选图接口上传图片接口参考资料一引入微信二通过接口注入权限验证配置三微信端拍照接口默认可以指定是原图还是压缩图,默认二者都有可以指 在微信端打开手机摄像头拍照,将拍照图片保存到服务器上需要使用到微信的JSSDK接口,主要使用到了拍照或从手机相册中选图接口(chooseImage),上传...

    yy13818512006 评论0 收藏0

发表评论

0条评论

only_do

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<