网站建设与管理实践,衡阳网站优化,python抓取更新wordpress,wordpress锚点背景
最近闲来无事#xff0c;同事闻了一下上传文件的基本操作#xff0c;如何用文件流来实现一个文件的上传功能
基本概念 流#xff08;Stream#xff09;是指在计算机的输入输出操作中各部件之间的数据流动。可以按照数据传输的方向#xff0c;将流可分为输入流和输出…背景
最近闲来无事同事闻了一下上传文件的基本操作如何用文件流来实现一个文件的上传功能
基本概念 流Stream是指在计算机的输入输出操作中各部件之间的数据流动。可以按照数据传输的方向将流可分为输入流和输出流它是java中相对比较重要的知识点无论是考试、面试还是实际工作过程中这都是经常能够使用到的身影。希望各位看官们可以更好地了解流的相关知识。
输入流
Java 流相关的类都封装在 java.io 包中而且每个数据流都是一个对象。所有输入流类都是 InputStream 抽象类字节输入流以及 Reader 抽象类字符输入流的子类。其中 InputStream 类是字节输入流的抽象类是所有字节输入流的父类其层次结构如下图 所示。 Java 中的字符他其实是 Unicode 编码即双字节而 InputerStream 是用来对单字节处理的在处理字符文本时显得不是很方便。这时可以使用 Java中 的文本Reader 类输入流 该类是字符输入流的抽象类即所有字符输入流的实现都是它的子类该类的方法与 InputerSteam 类的方法类似这里不再介绍。
以上是关于输入流的基本概念下面我们直接上代码。实现我们的文件上传功能
输出流
在 Java 中所有输出流类都是 OutputStream 抽象类字节输出流和 Writer 抽象类字符输出流的子类。其中 OutputStream 类是字节输出流的抽象类是所有字节输出流的父类其层次结构如下图所示。 OutputStream 类是所有字节输出流的超类用于对以二进制的形式将数据写入目标设备该类是抽象类不能被实例化。OutputStream 类提供了一系列跟数据输出有关的方法 代码如下 public ApiResult upload(NotNull(message 上传参数不能为空) RequestParam(file)MultipartFile[] file) throws BaseException{for (int i 0; i file.length; i) {String originalFilename file[i].getOriginalFilename();String type originalFilename.substring(originalFilename.lastIndexOf(.) 1);if(!getPicTypeMap().containsKey(type.toLowerCase())){throw new ParamException(只允许上传png、jpg格式图片或者pdf);}// TODO 此处未做大小显示如果想要限制放开就好if(type.equalsIgnoreCase(png) || type.equalsIgnoreCase(jpg) ){if(file[i].getSize() 5120){throw new ParamException(图片超过了限制);}}if(type.equalsIgnoreCase(mp4)){if(file[i].getSize() 512000){throw new ParamException(视频超过了限制);}}if(type.equalsIgnoreCase(pdf) ){if(file[i].getSize() 30720){throw new ParamException(pdf超过了限制);}}/* if(file[i].getSize() 设定的值){throw new ParamException(上传内容超过了限制);}*/}ApiResult apiResult new ApiResult();SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyyMMdd);String format simpleDateFormat.format(new Date());String realPath filePath File.separator format;String returnPath format;File targetFile new File(realPath);if (!targetFile.exists()){targetFile.mkdirs();}FileOutputStream bos null;for (int i 0; i file.length; i) {try {String fileName UUID.randomUUID().toString().replace(-,);//获取文件后缀.txtString extendFileName file[i].getOriginalFilename().substring(file[i].getOriginalFilename().lastIndexOf(.));String str targetFile File.separator fileName extendFileName;// 此处是外面要访问的所以必须添加returnPath returnPath / fileName extendFileName;logger.info(str);bos new FileOutputStream(str);bos.write(file[i].getBytes());apiResult.getData().put(filePath,/ returnPath);}catch(FileNotFoundException e){e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally{try {bos.flush();bos.close();} catch (IOException e) {e.printStackTrace();}}logger.info(上传成功);}return apiResult;} 今天的文章到此就结束了欢迎大家留言交流也可以点击下方的卡片关注一波 这篇文章2000多字你却说因为文字段被标记为质量低以下文字就是为了打破它的文字段而造成的质量低
相信和我一样遇到这个问题的的小伙伴们心里也已经暗自问候了这个产品经理的祖总十八代了吧
算法实在是不敢苟同文字的长短和文章的质量有毛线的关系吗
这篇文章因为文字段被标记为质量低以下文字就是为了打破它的文字段而造成的质量低
相信和我一样遇到这个问题的的小伙伴们心里也已经暗自问候了这个产品经理的祖总十八代了吧
算法实在是不敢苟同文字的长短和文章的质量有毛线的关系吗