国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用nio代替?zhèn)鹘y(tǒng)流實現(xiàn)文件上傳和下載功能

這篇具有很好參考價值的文章主要介紹了使用nio代替?zhèn)鹘y(tǒng)流實現(xiàn)文件上傳和下載功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.文件下載

/**NIO文件下載工具類
 * @author olalu
 */
public class NioDownloadUtils {

    /**
     * @description:
     * @param file: 要下在文件
     * @return: void
     */
    public static void downloadDoc(File file,HttpServletResponse response) throws IOException {
        OutputStream outputStream = response.getOutputStream();
        String contentType = Files.probeContentType(Paths.get(file.getAbsolutePath()));
        //設(shè)置響應(yīng)頭
        response.setHeader("Content-Type", contentType);
        response.setHeader("Content-Disposition", "attachment;filename="+ new String(file.getName().getBytes("utf-8"),"ISO8859-1"));
        response.setContentLength((int) file.length());
        //獲取文件輸入流
        FileInputStream fileInputStream = new FileInputStream(file);
        //獲取輸出流通道
        WritableByteChannel writableByteChannel = Channels.newChannel(outputStream);
        FileChannel fileChannel = fileInputStream.getChannel();
        //采用零拷貝的方式實現(xiàn)文件的下載
        fileChannel.transferTo(0,fileChannel.size(),writableByteChannel);
        //關(guān)閉對應(yīng)的資源
        fileChannel.close();
        outputStream.flush();
        writableByteChannel.close();
    }

    public static void downloadDoc(String path,HttpServletResponse response) throws IOException {
        File file = new File(path);
        if (!file.exists()){
            throw new RuntimeException("文件不存在");
        }
        downloadDoc(file,response);
    }

}

2.文件上傳

/**
     * 文件上傳方法
     */
    public static Result uploading(MultipartFile file) {
        //獲取文件名
        String realName = file.getOriginalFilename();
        String newName = null;
        if(realName != null && realName != ""){
            //獲取文件后綴
            String suffixName = realName.substring(realName.lastIndexOf("."));
            //生成新名字
            newName = UUID.randomUUID().toString().replaceAll("-", "")+suffixName;
        }else {
            return Result.fail("文件名不可為空");
        }
        //創(chuàng)建流
        FileInputStream fis = null;
        FileOutputStream fos = null;
        //創(chuàng)建通道
        FileChannel inChannel = null;
        FileChannel outChannel = null;
        try {
            fis = (FileInputStream)file.getInputStream();
            //開始上傳
            fos = new FileOutputStream(UPLOAD_URL+"\\"+newName);
            //通道間傳輸
            inChannel = fis.getChannel();
            outChannel = fos.getChannel();
            //上傳
            inChannel.transferTo(0,inChannel.size(),outChannel);

        }catch (IOException e){
            return Result.fail("文件上傳路徑錯誤");
        }finally {
            //關(guān)閉資源
            try {
                if (fis != null) {
                    fis.close();
                }
                if (fos != null) {
                    fos.close();
                }
                if (inChannel != null) {
                    inChannel.close();
                }
                if (outChannel != null) {
                    outChannel.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return Result.ok(newName);

    }

文章來源地址http://www.zghlxwxcb.cn/news/detail-648704.html

到了這里,關(guān)于使用nio代替?zhèn)鹘y(tǒng)流實現(xiàn)文件上傳和下載功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 使用postman實現(xiàn)文件上傳與下載

    使用postman實現(xiàn)文件上傳與下載

    文件上傳: ?1. 設(shè)置KEY值為Content-Type, VALUE值為multipart/form-data 2. 選擇Body ,類型為form-data,KEY值下拉選擇為file,這樣VALUE就會出現(xiàn)選擇按鈕,最重要的是,KEY值的file需要手動添加,不然后臺收到的為null 文件下載: ?1. 設(shè)置為GET請求 2.將文件下載時Header的Content-Type取消勾選

    2024年02月09日
    瀏覽(31)
  • 使用puppeteer完成監(jiān)聽瀏覽器下載文件并保存到自己本地或服務(wù)器上完成上傳功能

    獲取網(wǎng)站點擊的下載pdf,并把pdf重命名再上傳到COS云上面 “puppeteer”: “^19.7.2”, “egg”: “^3.15.0”, // 服務(wù)期用egg搭的 文件服務(wù)使用COS騰訊云 獲取瀏覽器下載事件,并把文件保存到本地 在保存到本地前監(jiān)聽此文件夾,如果有文件則獲取并上傳 加timer做防抖是為了防止在文

    2024年04月15日
    瀏覽(31)
  • C# 使用FTP上傳文件、下載文件,實現(xiàn)數(shù)據(jù)傳輸

    上傳文件的方法調(diào)用: 下載文件方法:

    2024年02月14日
    瀏覽(25)
  • 微信小程序使用webview實現(xiàn)文件上傳功能

    微信小程序使用webview實現(xiàn)文件上傳功能

    項目開發(fā)了一個批示單的功能,用戶填寫批示單信息要上傳正文及附件(多文件上傳,有需要可在文章末尾查看),上傳文件功能原調(diào)用的是uni.chooseMessageFile方法選擇聊天記錄中文件。 問題:用戶在電腦端打開小程序后發(fā)現(xiàn)選擇文件按鈕點擊無反應(yīng)。 百度后發(fā)現(xiàn)此方法電腦

    2024年03月14日
    瀏覽(28)
  • 第11講:使用ajax技術(shù)實現(xiàn)文件上傳功能(jQuery)

    第11講:使用ajax技術(shù)實現(xiàn)文件上傳功能(jQuery)

    軟件項目開發(fā)過程中,文件上傳功能是常用技術(shù)之一,經(jīng)常需要上傳文件過程中為了更好的體驗,不允許刷新當(dāng)前頁面,這樣就必須使用異步上傳技術(shù)了,jQuery提供了異步上傳的多種方法,下面跟大家一起探討使用jQuery.form插件上傳文件的功能,具體實現(xiàn)過程如下: 序號 資源

    2024年02月11日
    瀏覽(28)
  • uniapp使用uni-file-picker上傳組件實現(xiàn)多文件上傳功能

    組件代碼 選擇以及發(fā)生請求代碼,可以實現(xiàn)多文件上傳功能

    2024年02月11日
    瀏覽(33)
  • 基于SpringWeb MultipartFile文件上傳、下載功能

    在Web開發(fā)中,文件上傳是一個常見的功能需求。Spring框架提供了MultipartFile接口,用于處理文件上傳請求。MultipartFile可以代表一個多部分文件上傳請求中的一個文件,提供了一系列方法用于獲取文件的各種屬性和內(nèi)容,使得在后端處理文件上傳變得十分方便。下面我們將介紹

    2024年04月17日
    瀏覽(29)
  • Vue2-文件上傳、下載場景功能

    在項目開發(fā)中,上傳文件的應(yīng)用場景非常的多,一般情況下,上傳的接口都是由公司內(nèi)部自己開發(fā)一套適用于任何場景都可以使用的接口,但是這意味著該接口所涉及到的工作量與技術(shù)點就非常的多,且不穩(wěn)定。于是大公司選擇了前者自己研發(fā),小公司則選擇了性價比更高的

    2024年02月07日
    瀏覽(123)
  • Windows11 - 使用 sftp連接 CentOS 7,實現(xiàn)文件上傳與下載

    Windows系統(tǒng)的cmd命令實現(xiàn)遠程連接服務(wù)器,并且使用 sftp連接 CentOS 7,實現(xiàn)文件上傳與下載 注意:下方所有服務(wù)器ip,均為示例ip 這樣就成功連接上服務(wù)器,不過命令和Linux上命令有所區(qū)別 如下(示例): 注意:sftp 表示已經(jīng)進入 sftp 的交互模式。 連接成功之后,使用 pwd 命令查

    2024年02月03日
    瀏覽(29)
  • koa2文件的上傳下載功能

    const Router = require(“koa-router”); const upload = new Router(); const bodyParser = require(“koa-bodyparser”); const multer = require(\\\"@koa/multer\\\"); const path = require(“path”); const article = require(\\\"…/utils/sql\\\"); const { getCurrentTime } = require(\\\"…/utils/times\\\"); upload.use(bodyParser()); const storage = multer.diskStorage({ destin

    2024年02月02日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包