java2g文件上传的简单介绍

发布时间:2022-11-15

本文目录一览:

1、JAVA WEB文件上传步骤 2、java中怎样上传文件 3、JAVA 前端大文件上传如何实现? 4、Java 批量大文件上传下载如何实现? 5、java如何实现文件上传

JAVA WEB文件上传步骤

JAVA WEB文件上传步骤如下: 实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。 1、Web 端上传文件。在 Web 页面中添加上传输入项:input type="file" 设置文件上传输入项时应注意:

  1. 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。
  2. 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。
  3. 表单提交的方式要是 post 2、服务器端获取文件。如果提交表单的类型为 multipart/form-data 时,就不能采用传统方式获取数据。因为当表单类型为 multipart/form-data 时,浏览器会将数据以 MIME 协议的形式进行描述。如果想在服务器端获取数据,那么我们必须采用获取请求消息输入流的方式来获取数据。 3、Apache-Commons-fileupload。为了方便用户处理上传数据,Apache 提供了一个用来处理表单文件上传的开源组建。使用 Commons-fileupload 需要 Commons-io 包的支持。 4、fileuplpad 组建工作流程
  4. 客户端将数据封装在 request 对象中。
  5. 服务器端获取到 request 对象。
  6. 创建解析器工厂 DiskFileItemFactory
  7. 创建解析器,将解析器工厂放入解析器构造函数中。之后解析器会对 request 进行解析。
  8. 解析器会将每个表单项封装为各自对应的 FileItem
  9. 判断代表每个表单项的 FileItem 是否为普通表单项 isFormField,返回 true 为普通表单项。
  10. 如果是普通表单项,通过 getFieldName 获取表单项名,getString 获得表单项值。
  11. 如果 isFormField 返回 false 那么是用户要上传的数据,可以通过 getInputStream 获取上传文件的数据。通过 getName 可以获取上传的文件名。

java中怎样上传文件

Java代码实现文件上传

FormFile file=manform.getFile(); 
String newfileName = null;
String newpathname=null;
String fileAddre="/numUp";
try {
    InputStream stream = file.getInputStream();// 把文件读入
    String filePath = request.getRealPath(fileAddre);//取系统当前路径
    File file1 = new File(filePath);//添加了自动创建目录的功能
    ((File) file1).mkdir(); 
    newfileName = System.currentTimeMillis()
        + file.getFileName().substring(
            file.getFileName().lastIndexOf('.'));
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    OutputStream bos = new FileOutputStream(filePath + "/" + newfileName);
    newpathname=filePath+"/"+newfileName;
    System.out.println(newpathname);
    // 建立一个上传文件的输出流
    System.out.println(filePath+"/"+file.getFileName());
    int bytesRead = 0;
    byte[] buffer = new byte[8192];
    while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
        bos.write(buffer, 0, bytesRead);// 将文件写入服务器
    }
    bos.close();
    stream.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

JAVA 前端大文件上传如何实现?

如果是页面传至后台,那么页面上传文件的时候进行分片处理,如果是后台之间调用,直接代理里面分片处理。关键点,当前一片传输完毕之后,收到成功返回才开始传输下一片如果传输失败则重传当前片数,超时重传。传输时带上文件唯一标识,文件当前片数,总片数,当前片数md5校验值等。必要参数。 大致为这样,注意不要内存泄露了。

Java 批量大文件上传下载如何实现?

解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。 1)开发一个web插件。用于上传文件。 2)开发一个FTP工具,不用web上传。 3)用现有的FTP工具。 下面是几款不错的插件,你可以试试: 1)Jquery的uploadify插件。具体使用。你可以看帮助文档。

java如何实现文件上传

public static int transFile(InputStream in, OutputStream out, int fileSize) {
    int receiveLen = 0;
    final int bufSize = 1000;
    try {
        byte[] buf = new byte[bufSize];
        int len = 0;
        while(fileSize - receiveLen > bufSize)
        {
            len = in.read(buf);
            out.write(buf, 0, len);
            out.flush();
            receiveLen += len;
            System.out.println(len);
        }
        while(receiveLen < fileSize)
        {
            len = in.read(buf, 0, fileSize - receiveLen);
            System.out.println(len);
            out.write(buf, 0, len);
            receiveLen += len;
            out.flush();
        }
    } catch (IOException e) {
        // TODO 自动生成 catch 块
        e.printStackTrace();
    }
    return receiveLen;
}

这个方法从InputStream中读取内容,写到OutputStream中。 那么发送文件方,InputStream就是FileInputStreamOutputStream就是Socket.getOutputStream。 接受文件方,InputStream就是Socket.getInputStreamOutputStream就是FileOutputStream。 就OK了。 至于存到数据库里嘛,Oracle里用Blob。搜索一下,也是一样的。从Blob能获取一个输出流。