zoukankan      html  css  js  c++  java
  • javaweb 上传文件使用NIO进行读写

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    import java.util.UUID;

    @Controller
    public class MailSend {

    @Value("${uploadpath:}")
    private String uploadpath;

    @RequestMapping("/uploadfile")
    @ResponseBody
    public Object uploadfile(@RequestParam("file")MultipartFile file){
    FileInputStream fis = null;
    FileOutputStream fos = null;

    try {
    fis = (FileInputStream) file.getInputStream();
    fos = new FileOutputStream(new File(uploadpath + "\" + UUID.randomUUID().toString() +"_" +file.getName()));

    FileChannel inChannel = fis.getChannel();
    FileChannel outChannel = fos.getChannel();

    int capacity = 1024;
    ByteBuffer buffer = ByteBuffer.allocate(capacity);
    int len = -1;
    while( (len=inChannel.read(buffer))!=-1 ){
    buffer.flip();

    int length = 0;
    while (( length=outChannel.write(buffer) )!=0){

    }
    buffer.clear();
    }
    inChannel.close();
    outChannel.close();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fis.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    try {
    fos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return null;
    }

    }
    ————————————————
    版权声明:本文为CSDN博主「临窗,听雨声」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yali_aini/article/details/91543519

  • 相关阅读:
    matlab中 数据保留有效位数
    matlab的m程序转执行文件exe
    MFC创建好的对话框如何移植到新程序中
    STM32 ADC转换时间
    MFC修改窗口无标题和标题信息,修改执执行文件图标
    兔子慢的原因
    core2.1独立布署,报错的原因。
    修复安卓的bug
    2018-11-21 ko.pureComputed的使用
    2018-11-17 js的this引起的血案
  • 原文地址:https://www.cnblogs.com/niudaxianren/p/12456362.html
Copyright © 2011-2022 走看看