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

文件上傳及oss簡單上傳及下載

這篇具有很好參考價(jià)值的文章主要介紹了文件上傳及oss簡單上傳及下載。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

文件上傳就是通過io流復(fù)制到瀏覽器的過程

快速實(shí)現(xiàn)文件上傳功能

1.后臺(tái)實(shí)現(xiàn)文件上傳功能? 定義controllere

@RequestMapping("/upload/file")
    @ResponseBody
    public String uploadImg(@RequestParam("file") MultipartFile multipartFile){
        if (multipartFile.isEmpty()){
            return "文件有誤";
        }
        long size = multipartFile.getSize();  //文件大小
        String originalFilename = multipartFile.getOriginalFilename();  //文件名字
        String contentType = multipartFile.getContentType(); //文件類型
        return uploadService.uploadFile(multipartFile);
    }

定義serevice

    @Value("${file.uploadFolder}")
    private String uploadFolder;  //具體位置

    @Value("${file.staticPath}")
    private String staticPath;  //http://localhpst:8080
 
    /**
     *MultipartFile 這個(gè)對象是springmvc提供的文件上傳的接受的類
     * 他的底層自動(dòng)會(huì)和HttpServletRequest request 中的request.getInputStream融合
     * 從而達(dá)到文件上傳的效果,也就是告訴我們一個(gè)道理
     * 文件上傳的底層原理request.getInputStream
     * @param multipartFile
     * @return
     */
    public String uploadFile(MultipartFile multipartFile){
        try {
            //文件名字
            String filename = multipartFile.getOriginalFilename();
            //文件后綴
            String suffix = filename.substring(filename.lastIndexOf("."));
            // 生成的唯一的文件名:能不能用中文名:不能因?yàn)榻y(tǒng)一用英文命名。
            String newFileName = UUID.randomUUID().toString() + suffix;

            //日期目錄
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            String format = dateFormat.format(new Date());//2021/11/03

            //指定文件上傳的目錄
            String targetPath = uploadFolder + format;
            File file = new File(targetPath);
            // 如果目錄不存在 遞歸創(chuàng)建
            if (!file.exists())
                file.mkdirs();

            //指定文件上傳以后的服務(wù)器的完整的文件名
            File targetFileName = new File(targetPath,newFileName);

            //文件上傳到指定的目錄
            multipartFile.transferTo(targetFileName);
            //可訪問的路徑要返回頁面
            // http://localhpst:8080/2021/10/27/5f61dea2-4b77-4068-8d0b-fdf415eac6df.png
            //文件所在的目錄和文件名(生成的)
            String filename1 = format +"/"+ newFileName;
            return staticPath+filename1;
        } catch (IOException e) {
            e.printStackTrace();
            return "faile";
        }
       
    }

文件上傳不會(huì)直接上傳真是的目錄,它一定要經(jīng)過一個(gè)臨時(shí)目錄的中轉(zhuǎn)以后,才會(huì)上傳到真是目錄。作用:

  • 防止上傳出現(xiàn)網(wǎng)絡(luò)斷開,或者用戶上傳直接刷新或者取消。因?yàn)槿绻脩舻木W(wǎng)絡(luò)斷開或者取消,就造成大量的垃圾文件

  • 保證真實(shí)目錄上傳的文件一定是有效的。

文件上傳及oss簡單上傳及下載

?配置文件上傳大小

spring:
  servlet:
    multipart:
      # 是單個(gè)文件大小 默認(rèn)1M 10KB
      max-file-size: 20MB
      # 是設(shè)置總上傳的數(shù)據(jù)大小
      max-request-size: 100MB
      #當(dāng)文件達(dá)到多少時(shí)進(jìn)行磁盤寫入
      file-size-threshold: 20MB
      #臨時(shí)目錄
      location: D://test  

?或者這樣配置

    @Bean  
    public MultipartConfigElement multipartConfigElement() {  
        MultipartConfigFactory factory = new MultipartConfigFactory();  
        //文件最大  
        factory.setMaxFileSize("10240KB"); //KB,MB  
        /// 設(shè)置總上傳數(shù)據(jù)總大小  
        factory.setMaxRequestSize("102400KB");  
        return factory.createMultipartConfig();  
    }  

這樣就達(dá)到了文件上傳的功能

2.通過http請求服務(wù)資源

????????springboot有一個(gè)目錄:static這個(gè)目錄其實(shí)就是靜態(tài)資源目錄,這個(gè)目錄下面的文件是可以通過http直接問題的。但是程序話一般打成jar包,我們沒辦法去文件寫入到這個(gè)static下,還有就是上傳文件要訪問的話,打成jar包也不能直接訪問,所以springboot提供靜態(tài)資源目錄的額外的映射機(jī)制,就是靜態(tài)資源服務(wù)映射。它就類似于:nginx的靜態(tài)資源映射。


@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {


    @Value("${file.staticPatternPath}")
    private String staticPatternPath;
    @Value("${file.uploadFolder}")
    private String uploadFolder;

    // 這個(gè)就是springboot中springMvc讓程序開發(fā)者去配置文件上傳的額外的靜態(tài)資源服務(wù)的配置
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //registry.addResourceHandler("訪問的路徑").addResourceLocations("上傳資源的路徑");
        //注意: uploadFolder 后面一定跟/ 如 E:/test/  如果E:/test 就會(huì)出現(xiàn)404
        registry.addResourceHandler(staticPatternPath).addResourceLocations("file:"+uploadFolder);
    }

    
}

配置文件

file:
  uploadFolder: E:/test/
  staticPath: http://localhost:8080/
  staticPatternPath: /uploadFile/**

3.阿里云簡單上傳

官方文檔?前言 (aliyun.com)https://help.aliyun.com/document_detail/32008.html?spm=5176.87240.400427.45.4c884614EG2PmS endpoint,accessKeyId,accessKeySecret,bucketName是oss自帶參數(shù),登陸oss查看

service層

    public String oosUploadFile(MultipartFile multipartFile) {

        String bucketName = null;
        String endpoint = null;
        String fileUrl = null;
        try {
             //Bucket名稱。
            bucketName = "xxx";
            // yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填  寫為https://oss-cn-hangzhou.aliyuncs.com。
             endpoint = "oss-cn-beijing.aliyuncs.com";
            // 阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,風(fēng)險(xiǎn)很高。強(qiáng)烈建議您創(chuàng)建并使用RAM用戶 
            進(jìn)行API訪問或日常運(yùn)維,請登錄RAM控制臺(tái)創(chuàng)建RAM用戶。
            String accessKeyId = "XXX";
            String accessKeySecret = "XXXX";


            // 創(chuàng)建OSSClient實(shí)例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            InputStream inputStream = multipartFile.getInputStream();

            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
            String format = simpleDateFormat.format(new Date());

            String originalFilename = multipartFile.getOriginalFilename();
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String fileName = UUID.randomUUID().toString();
            String newName = fileName + suffix;
            fileUrl = format + "/" + newName;

            // 創(chuàng)建PutObjectRequest對象。
            // 依次填寫B(tài)ucket名稱(例如examplebucket)、Object完整路徑(例如exampledir/exampleobject.txt)和本地文件的完整路徑。Object完整路徑中不能包含Bucket名稱。
            // 如果未指定本地路徑,則默認(rèn)從示例程序所屬項(xiàng)目對應(yīng)本地路徑中上傳文件。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileUrl, inputStream);

            // 如果需要上傳時(shí)設(shè)置存儲(chǔ)類型和訪問權(quán)限,請參考以下示例代碼。
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            // 上傳文件。
            ossClient.putObject(putObjectRequest);

            // 關(guān)閉OSSClient。
            ossClient.shutdown();

        } catch (IOException e) {
            e.printStackTrace();
        }
        //https://upload-liang.oss-cn-beijing.aliyuncs.com/2021/11/04/129904d9-d959-44e1-bcaa-5f7a0b663287.tx
        return "https://" + bucketName + "." + endpoint + "/" + fileUrl;
    }

4.阿里云簡單下載到瀏覽器

controller層

    @RequestMapping("/download")
    @ResponseBody
    public void download(HttpServletResponse response){
        String filePath = "2021/11/04/129904d9-d959-44e1-bcaa-5f7a0b663287.txt";
        uploadService.download(response,filePath);
        //uploadService.downFile(response);
    }

?service層

public void download( HttpServletResponse response,String filePath){
        String filename = filePath.substring(filePath.lastIndexOf("/")).replace("/", "");
        //String filename = "129904d9-d959-44e1-bcaa-5f7a0b663287.txt";
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,風(fēng)險(xiǎn)很高。強(qiáng)烈建議您創(chuàng)建并使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,請登錄RAM控制臺(tái)創(chuàng)建RAM用戶。
        String accessKeyId = "xxxx";
        String accessKeySecret = "xxxx";
        // 填寫B(tài)ucket名稱。
        String bucketName =  "upload-liang";
        BufferedInputStream bufferedInputStream = null;
        OutputStream  outputStream  = null;
        try {
            response.reset();
            response.setCharacterEncoding("utf-8");
            response.setContentType("application/x-msdownload");
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("UTF-8"), "iso8859-1"));
            // 創(chuàng)建OSSClient實(shí)例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            //public OSSObject getObject(String bucketName, String key) throws OSSException, ClientException;
            // key值為 不包含Bucket名稱在內(nèi)的Object完整路徑,例如2021/11/04/129904d9-d959-44e1-bcaa-5f7a0b663287.txt。
            OSSObject object = ossClient.getObject(bucketName, filePath);
            bufferedInputStream = new BufferedInputStream(object.getObjectContent());
            outputStream = response.getOutputStream();

            byte[] bytes = new byte[1024];
            int len = 0;
            while (((len=bufferedInputStream.read(bytes))!=-1)){
                outputStream.write(bytes,0,len);
            }
            outputStream.flush();
            ossClient.shutdown();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (outputStream != null) {
                    outputStream.close();
                }
                if (bufferedInputStream != null) {
                    bufferedInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

4.阿里云簡單下載到本地文章來源地址http://www.zghlxwxcb.cn/news/detail-406750.html

 public void downLoad(){
        // yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,風(fēng)險(xiǎn)很高。強(qiáng)烈建議您創(chuàng)建并使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,請登錄RAM控制臺(tái)創(chuàng)建RAM用戶。
        String accessKeyId = "xxxx";
        String accessKeySecret = "xxxx";
        // 填寫B(tài)ucket名稱。
        String bucketName =  "upload-liang";
        // 填寫不包含Bucket名稱在內(nèi)的Object完整路徑,例如testfolder/exampleobject.txt。
        String objectName = "2021/11/04/129904d9-d959-44e1-bcaa-5f7a0b663287.txt";

        // 創(chuàng)建OSSClient實(shí)例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 下載Object到本地文件,并保存到指定的本地路徑中。如果指定的本地文件存在會(huì)覆蓋,不存在則新建。
        // 如果未指定本地路徑,則下載后的文件默認(rèn)保存到示例程序所屬項(xiàng)目對應(yīng)本地路徑中。
        ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File("D:\\test\\examplefile.txt"));

        // 關(guān)閉OSSClient。
        ossClient.shutdown();
    }

到了這里,關(guān)于文件上傳及oss簡單上傳及下載的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • C/C++ 通過HTTP實(shí)現(xiàn)文件上傳下載

    C/C++ 通過HTTP實(shí)現(xiàn)文件上傳下載

    WinInet(Windows Internet)是 Microsoft Windows 操作系統(tǒng)中的一個(gè) API 集,用于提供對 Internet 相關(guān)功能的支持。它包括了一系列的函數(shù),使得 Windows 應(yīng)用程序能夠進(jìn)行網(wǎng)絡(luò)通信、處理 HTTP 請求、FTP 操作等。WinInet 提供了一套完整的網(wǎng)絡(luò)通信工具,使得開發(fā)者能夠輕松地構(gòu)建支持網(wǎng)絡(luò)功

    2024年02月19日
    瀏覽(25)
  • Python(35):Python3 通過https上傳文件和下載文件

    Python http方式的下載,參考:https://blog.csdn.net/fen_fen/article/details/113753983 https需要先安裝需要的模塊 1.1、調(diào)用: 1.2、上傳代碼 ?2.1、下載調(diào)用: 2.2、Python3 https下載文件工具類:

    2024年01月23日
    瀏覽(20)
  • 【SpringBoot】簡單的文件上傳和文件下載以及圖片回顯

    【SpringBoot】簡單的文件上傳和文件下載以及圖片回顯

    介紹 這里是小編成長之路的歷程,也是小編的學(xué)習(xí)之路。希望和各位大佬們一起成長! 以下為小編最喜歡的兩句話: 要有最樸素的生活和最遙遠(yuǎn)的夢想,即使明天天寒地凍,山高水遠(yuǎn),路遠(yuǎn)馬亡。 一個(gè)人為什么要努力? 我見過最好的答案就是:因?yàn)槲蚁矚g的東西都很貴,

    2024年01月15日
    瀏覽(30)
  • JAVA通過阿里云OSS存儲(chǔ)實(shí)現(xiàn)圖片上傳功能

    首先我們需要在阿里云注冊賬號(hào),實(shí)名認(rèn)證后開通OSS功能,點(diǎn)擊進(jìn)入OSS功能的管理平臺(tái) 進(jìn)入概覽頁面后,點(diǎn)擊Bucket列表,創(chuàng)建一個(gè)Bucket(相當(dāng)于一個(gè)存放文件的文件夾) ?關(guān)鍵是要獲得下面幾個(gè)關(guān)鍵的信息,只有擁有這些信息才能連接上這個(gè)Bucket進(jìn)行操作: 添加對應(yīng)依賴 ?

    2024年02月05日
    瀏覽(26)
  • windows通過ssh連接Liunx服務(wù)器并實(shí)現(xiàn)上傳下載文件

    windows通過ssh連接Liunx服務(wù)器并實(shí)現(xiàn)上傳下載文件

    目錄 連接ssh 操作方式 下載上傳文件 特別提醒 操作方式 示例 前言-與正文無關(guān) ? ? ? ? 生活遠(yuǎn)不止眼前的苦勞與奔波,它還充滿了無數(shù)值得我們?nèi)ンw驗(yàn)和珍惜的美好事物。在這個(gè)快節(jié)奏的世界中,我們往往容易陷入工作的漩渦,忘記了停下腳步,感受周圍的世界。讓我們一

    2024年02月02日
    瀏覽(27)
  • 【minio】Ubuntu安裝MinIO文件服務(wù)器并通過C++上傳下載

    【minio】Ubuntu安裝MinIO文件服務(wù)器并通過C++上傳下載

    ?? ★,° :.☆( ̄▽ ̄)/$: .°★ ?? 這篇文章主要介紹MinIO的使用。 學(xué)其所用,用其所學(xué)?!簡⒊?歡迎來到我的博客,一起學(xué)習(xí)知識(shí),共同進(jìn)步。 喜歡的朋友可以關(guān)注一下,下次更新不迷路?? MinIO是一種高性能、可擴(kuò)展的 對象存儲(chǔ)服務(wù) ,它可以在私有云、公共云和邊緣計(jì)

    2024年02月08日
    瀏覽(32)
  • Java實(shí)現(xiàn)阿里云OSS簡單上傳詳解

    Java實(shí)現(xiàn)阿里云OSS簡單上傳詳解

    (1)找到對象存儲(chǔ)OSS (2)進(jìn)入控制臺(tái) (3)創(chuàng)建Bucket(都默認(rèn)即可) (4)獲取accessKeyId和accessKeySecret

    2024年02月11日
    瀏覽(23)
  • 已解決:前端直傳阿里oss報(bào)錯(cuò)跨域問題,“No ‘Access-Control-Allow-Origin‘”,這個(gè)錯(cuò)誤基本就是在阿里的開放平臺(tái)沒做規(guī)則配置(附我封裝的上傳源碼)

    已解決:前端直傳阿里oss報(bào)錯(cuò)跨域問題,“No ‘Access-Control-Allow-Origin‘”,這個(gè)錯(cuò)誤基本就是在阿里的開放平臺(tái)沒做規(guī)則配置(附我封裝的上傳源碼)

    就直接上阿里oss管理后臺(tái)去增加一個(gè)跨域規(guī)則:見圖片,特詳細(xì) ?配置成這樣點(diǎn)確定就好了,就這么簡單 標(biāo)題其實(shí)就已經(jīng)是答案了,但是以我的性格,我還是要介紹介紹案發(fā)背景,如果你比較著急,可以直接跳到解決方案那里看: 本來我就是個(gè)干前端的,也干安卓端(為啥

    2024年02月11日
    瀏覽(22)
  • Shell腳本常用命令及如何通過shell腳本實(shí)現(xiàn)服務(wù)器上文件的上傳和下載

    Shell腳本常用命令 簡介 1、什么是shell: Shell 是一個(gè)用 C 語言編寫的應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。Shell 腳本(shell script),是一種為 shell 編寫的腳本程序,擴(kuò)展名為.sh。 2、如何編寫shell腳本: 文本編輯器(可以使用

    2024年02月03日
    瀏覽(31)
  • 【業(yè)務(wù)功能篇77】微服務(wù)-OSS對象存儲(chǔ)-上傳下載圖片

    【業(yè)務(wù)功能篇77】微服務(wù)-OSS對象存儲(chǔ)-上傳下載圖片

    3. 圖片管理 文件存儲(chǔ)的幾種方式 單體架構(gòu)可以直接把圖片存儲(chǔ)在服務(wù)器中 但是在分布式環(huán)境下面直接存儲(chǔ)在WEB服務(wù)器中的方式就不可取了,這時(shí)我們需要搭建獨(dú)立的文件存儲(chǔ)服務(wù)器。 3.1 開通阿里云服務(wù) 針對本系統(tǒng)中的相關(guān)的文件,圖片,文本等統(tǒng)一的交給云服務(wù)器管理。

    2024年02月11日
    瀏覽(33)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包