`

服务器端和客户端的上传代码

阅读更多

客户端:(android)

 

 private void uploadFile()
    {

      String uploadUrl = "http://IP:8081/dbcampus/UploadFileServlet";
      String end = "\r\n";
      String twoHyphens = "--";
      String boundary = "******";
      try
      {
        URL url = new URL(uploadUrl);
        HttpURLConnection httpURLConnection = (HttpURLConnection) url
            .openConnection();
        httpURLConnection.setDoInput(true);
        httpURLConnection.setDoOutput(true);
        httpURLConnection.setUseCaches(false);
        httpURLConnection.setRequestMethod("POST");
        httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
        httpURLConnection.setRequestProperty("Charset", "UTF-8");
        httpURLConnection.setRequestProperty("Content-Type",
            "multipart/form-data;boundary=" + boundary);

        DataOutputStream dos = new DataOutputStream(httpURLConnection
            .getOutputStream());
        dos.writeBytes(twoHyphens + boundary + end);
        dos
            .writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\""
                + srcPath.substring(srcPath.lastIndexOf("/") + 1)
                + "\"" + end);
        dos.writeBytes(end);

        FileInputStream fis = new FileInputStream(srcPath);
        byte[] buffer = new byte[8192]; // 8k
        int count = 0;
        while ((count = fis.read(buffer)) != -1)
        {
          dos.write(buffer, 0, count);

        }
        fis.close();

        dos.writeBytes(end);
        dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
        dos.flush();

        InputStream is = httpURLConnection.getInputStream();
        InputStreamReader isr = new InputStreamReader(is, "utf-8");
        BufferedReader br = new BufferedReader(isr);
        String result = br.readLine();

        Toast.makeText(this, result, Toast.LENGTH_LONG).show();
        dos.close();
        is.close();

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

    }

 

 

服务器端:

 

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  try
  {
   request.setCharacterEncoding("UTF-8"); // 设置处理请求参数的编码格式
   response.setContentType("text/html;charset=UTF-8"); // 设置Content-Type字段值
   PrintWriter out = response.getWriter();
  
   // 下面的代码开始使用Commons-UploadFile组件处理上传的文件数据
   FileItemFactory factory = new DiskFileItemFactory(); // 建立FileItemFactory对象
   ServletFileUpload upload = new ServletFileUpload(factory);
   // 分析请求,并得到上传文件的FileItem对象
   List<FileItem> items = upload.parseRequest(request);
   // 从web.xml文件中的参数中得到上传文件的路径
   String uploadPath = request.getSession().getServletContext().getRealPath("/");
   System.out.println("uploadPath"+uploadPath);
   File file = new File(uploadPath+"img");
   if (!file.exists())
   {
    file.mkdir();
   }
   String filename = ""; // 上传文件保存到服务器的文件名
   InputStream is = null; // 当前上传文件的InputStream对象
    int lengthe=0;
   // 循环处理上传文件
   for (FileItem item : items)
   {
    // 处理普通的表单域
    if (item.isFormField())
    {
     if (item.getFieldName().equals("filename"))
     {
      // 如果新文件不为空,将其保存在filename中
      if (!item.getString().equals(""))
       filename = item.getString("UTF-8");
      System.out.println("filename1"+filename);
     }
    }
    // 处理上传文件
    else if (item.getName() != null && !item.getName().equals(""))
    {
     // 从客户端发送过来的上传文件路径中截取文件名
     filename = item.getName().substring(
       item.getName().lastIndexOf("\\") + 1);
     System.out.println("filename2"+filename);
     
     is = item.getInputStream(); // 得到上传文件的InputStream对象
     lengthe=is.available();//获得要上传文件的所附带流的大小
     System.out.println("lengthe:"+lengthe);
     

    }
   }
   // 将路径和上传文件名组合成完整的服务端路径
   String filename1 = uploadPath +"img"+ filename;
   // 如果服务器已经存在和上传文件同名的文件,则输出提示信息
   if (new File(filename1).exists())
   {
    new File(filename1).delete();
   }
  
   // 开始上传文件(采用字节流上传)(代码是可用的)
   if (!filename1.equals(""))
   {
    File file1=new File(uploadPath+"img",filename);
    
    // 用FileOutputStream打开服务端的上传文件
    FileOutputStream fos = new FileOutputStream(file1);
    byte[] buffer = new byte[8192]; // 每次读8K字节
    int count = 0;
    // 开始读取上传文件的字节,并将其输出到服务端的上传文件输出流中
    while ((count = is.read(buffer)) > 0)
    {
     fos.write(buffer, 0, count); // 向服务端文件写入字节流
     
    }
    fos.close(); // 关闭FileOutputStream对象
    is.close(); // InputStream对象
    out.println("文件上传成功!");
    
   }
   
  }
  catch (Exception e)
  {

  }

 }

分享到:
评论

相关推荐

    VC CSocketFTP服务器端及客户端

    服务器端通过监听特定的端口,等待客户端的连接请求,一旦连接建立,双方就可以通过发送和接收数据来实现文件的查询、上传和下载。 FTP是互联网上广泛使用的文件传输协议,它定义了两个进程之间如何交换文件。在这...

    delphi客户端文件上传代码和服务器端php接收代码

    标题“delphi客户端文件上传代码和服务器端php接收代码”指出,我们将探讨如何使用Delphi编写客户端程序来实现文件上传,并通过PHP在服务器端接收和处理这些文件。这个过程通常包括以下几个步骤: 1. **Delphi...

    一个ftp服务器端和简易客户端

    在这个主题中,我们主要讨论的是一个FTP服务器端和一个简易的FTP客户端的实现。虽然代码可能存在一些问题,但它们仍然可以用于基本的连接测试,帮助开发者理解FTP的工作原理以及如何构建自己的FTP应用。 FTP服务器...

    oauth认证服务器端和客户端

    OAuth认证涉及两个主要角色:服务器端(也称为资源服务器)和客户端。 **OAuth认证服务器端**: OAuth服务器端是拥有用户资源的服务提供者,如社交网络或邮件服务。当用户想要授权第三方应用访问其在服务器端的资源...

    SVN服务器端和客户端 window64

    SVN(Subversion)是一种版本控制系统,用于管理软件项目中的源代码和其他文件的变更历史。在软件开发过程中,SVN可以帮助团队协同工作,跟踪每次修改,回滚错误的改动,以及保持代码库的一致性。在这个“SVN服务器...

    FTP服务器端和客户端源码

    FTP服务器端部分是系统的核心,它负责接收来自客户端的连接请求,管理用户账户、权限和会话,并处理文件上传和下载的请求。源码中可能包含了以下关键组件: 1. **服务器监听模块**:该模块负责监听特定端口(通常为...

    P2P传输源代码,包括服务器端和客户端

    在你提供的压缩包文件中,包含的是P2P传输的源代码,具体实现了服务器端和客户端的功能,语言为C++。C++是一种强大的、通用的编程语言,特别适合系统编程和高性能计算,因此它是实现P2P系统的一个常见选择。 1. **...

    Ftp服务器端客户端程序

    FTP服务器和FTP客户端两个子文件夹可能分别包含了对应的源代码和可执行文件,通过查看源代码,开发者可以更深入地学习FTP协议的实现细节和VC编程技巧。 总的来说,这个VC开发的FTP服务器端和客户端程序是一个很好的...

    qt 客户端和服务器端源代码

    在"qt 客户端和服务器端源代码"这个主题中,我们将深入探讨如何使用QT来构建客户端和服务器应用,实现文件的传输。 首先,让我们了解QT中的网络编程基础。QT提供了一个强大的网络模块(QNetworkAccessManager),...

    P2P源代码 vs2008 (含服务器端与客户端,可穿透局域网)

    从标签"服务器端"和"客户端"来看,这个源代码包含两部分:一部分是服务器程序,负责协调和管理网络中的交互;另一部分是客户端程序,用户可以直接与之交互,进行数据的发送和接收。服务器端通常会处理连接请求、维持...

    FTP客户端服务器端全部代码

    在这个"FTP客户端服务器端全部代码"中,我们可以预见到包含实现FTP客户端和服务器功能的源代码。THFTPAPI.c 和 THFTPAPI.h 是两个关键文件,分别代表了实现FTP功能的C语言源代码和头文件。 THFTPAPI.c 可能包含了...

    客户端与服务器端的通信(客户端)

    客户端代码,通过Tcp协议来进行通信,内容仅做参考,接受指正

    svn服务器端、客户端连接,上传,下载教程

    在本教程中,我们将深入探讨如何设置和使用SVN服务器端以及客户端进行连接、上传和下载操作。 **一、安装与配置SVN服务器端** 1. **选择SVN服务器软件**:常见的SVN服务器软件有VisualSVN Server(Windows)、...

    android上传文件,java服务器接收 客户端与服务器端两端上传代码

    1. **错误处理**:客户端和服务器端都需要处理可能出现的异常,如网络问题、文件不存在、服务器空间不足等。 2. **安全性**:确保文件上传过程的安全性,防止文件注入攻击,对上传文件进行检查,限制文件类型和大小...

    ios移动社交app的客户端+webservice服务器端源码

    在iOS平台上开发移动社交应用程序,通常涉及到多个技术层面,包括客户端和服务器端的协同工作。本资源提供的"ios移动社交app的客户端+webservice服务器端源码"正是一个完整的解决方案,涵盖了用户交互、数据交换...

    LabVIEW使用TCP通讯示例程序(包含服务器端和客户端VI源程序代码文件,可直接运行)

    本资料为7z压缩包打包上传,包含TCP服务器端和客户端,并且客户端可对接收到的数据以文本方式保存。LabVIEW使用TCP通讯示例程序可设置端口号,LabVIEW可通过TCP发送波形,数值,布尔,文本等类型的数据,并且有相应...

    SVN服务器端,客户端,语言包

    SVN服务器端是系统的核心,负责存储和管理版本库,而客户端则是用户与这些版本库交互的工具。 在提供的文件列表中,我们可以看到以下几个关键组件: 1. **TortoiseSVN**: 这是一款非常流行的Windows平台上的SVN...

    客户端向服务器端上传文件

    在客户端向服务器端上传文件的过程中,涉及到的主要技术包括前端交互、后端处理和文件传输协议。下面将分别从这三个方面详细讲解相关知识点。 首先,前端交互是用户与应用程序的接触点,这里通常会使用HTML、CSS和...

    FTP.zip_C# ftp_FTP服务器_ftp客户端_ftp服务器端_ftp服务端

    本压缩包“FTP.zip”提供了C#实现FTP功能的基础示例,包括服务器端和客户端的代码,帮助开发者理解和构建自己的FTP应用。 FTP服务器端: FTP服务器端通常由一个程序组成,该程序监听特定端口(默认为21)上的连接...

    FTP服务器和客户端源代码 vs2010能运行

    FTP服务器端的源代码通常涉及以下关键组件和概念: 1. **监听和连接**:服务器通过指定端口(默认是21)监听客户端的连接请求。源代码中会包含设置监听器和处理连接请求的代码。 2. **命令处理**:FTP协议基于命令...

Global site tag (gtag.js) - Google Analytics