下载,更新及删除文件(以图片为例)

springboot+layui文件上传组件实现文件上传和删除 前端代码: 后端代码: 源码地址:链接:https://pan.baidu.com/s/1FhUG2wAd6-Kpkt-EDHjtBw 提取码:hlmp 注:此源码还整合了layui的后台管理系统模板和freemark模板引擎。 阅读详情

一、下载文件

public void downloaddownfiles(HttpServletResponse response, String filepath) {
	try {
        File file = new File(filepath);//filepath为绝对路径,包括服务器路径,项目中文件夹路径和文件名称(文件名称包括后缀名)
        // 取得文件名。
        String filename = file.getName();
        // 以流的形式下载文件。
        InputStream fis = new BufferedInputStream(new FileInputStream(filepath));
        byte[] buffer = new byte[fis.available()];
        fis.read(buffer);
        fis.close();
        // 清空response
        response.reset();
        // 设置response的Header
        String newfilename=URLEncoder.encode(filename, "UTF-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + newfilename);
        response.addHeader("Content-Length", "" + file.length());
        OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
        response.setContentType("application/octet-stream");
        toClient.write(buffer);
        toClient.flush();
        toClient.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}


二、更新文件

注:只更新图片内容名称不变,更新同类型文件

public void fileUpdate(@RequestParam("file") MultipartFile file,HttpServletRequest request,HttpServletResponse response) throws Exception {
	String filename = request.getParameter("name");//服务器中原图片的文件名,从前端页面传入后台
	String filePath="";
	if (!file.isEmpty()) {
		try {
			filePath= request.getSession().getServletContext().getRealPath("/")+ "/file/"+ filename;
			String filerootpath = request.getSession().getServletContext().getRealPath("/")+ "/file/";
			File filerootpathdic = new File(filerootpath);
			if(!filerootpathdic.exists()){
				filerootpathdic.mkdirs();
			}
			file.transferTo(new File(filePath));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

三、删除文件

public Boolean delete(String name,HttpServletRequest request ){
	String path = request.getSession().getServletContext().getRealPath("/");
	File file = new File(path+"/file/"+name);//name为带后缀的文件名
	file.delete();
	return true;
}

欧拉.............








Java实现将文件(图片)上传到七牛云对象存储,并实现下载和删除功能 Java实现将文件(图片)上传到七牛云对象存储,并实现下载和删除功能。在搭建项目时如果把上传的文件存储在该项目运行的主机上,会导致访问该项目时加载非常缓慢,因此需要对象存储。并且对象存储具有网站数据动静分离,大幅提升网页性能,储存节点多,支持跨地域实时同步,成本低,可节省服务器空间等优点。本文讲诉的是如何使用七牛云对象存储,用七牛云是因为七牛云送10G空间,对于小网站来说足够了。 阅读详情

相关推荐

硬件工程师的蜗牛成长路

1、《模拟电路课程》R/L/C/继电器/光耦/二极管/三极管/MOS管磁珠/ESD/TVS/肖特基二极管/稳压二极管/保险丝/GDT/TSS/光耦/MOS/运放/BJT比较器/面板开关/按键开关/拨码开关/BUCK/LDO/电源防护器件LM5069单输出PLL/多路输出PLL/单端晶振/差分晶振/晶体(这方面不熟悉,待以后补充)1)速度传感器2)温度传感器3)倾斜角传感器4)火焰传感器5)红外传感器6)呼吸心跳采集chaunganqi1)数字隔离 电平转换芯片/磁隔离/专用隔离芯片。

caozhaokun的博客 1978

Java实现文件(图片)的上传下载与删除

Java通过Spring框架提供的MultipartFile工具类来实现文件和图片的上传下载与删除

Coin_Collecter的博客 2891

Dinic算法的复杂度分析及证明

一般图 复杂度主要取决于dfs增广的过程。 将dfs部分的复杂度分成两部分来分析:1)修改增广路上边的流量。至多会增广mmm次,一条增广路的长度至多是nnn,所以这一部分的复杂度是O(nm)O(nm)O(nm)。2)dfs遍历时找增广路失败时经过的边。由于一旦从某条边出发找最短路失败了,我们就不会再走那条边(当前弧优化),所以这一部分的复杂度是O(m)O(m)O(m)的。故而dfs增广的复杂度是O...

这个博客已经搬到了:zhongyuwei.github.io 4390

java上传文件展示和删除文件,Spring Boot 文件操作,上传、浏览和删除

一起来完成以下步骤:该工程演示Spring Boot如何上传、展示和删除文件页面引擎采用Thymeleaf后端使用Spring Boot文件上传使用Form提交方式(而不是Ajax方式或VUE前后端分离)FileControlle.javapackage com.deepincoding.fileuploadformpage;import org.springframework.beans.fac...

weixin_42392367的博客 249

诠视MR眼镜Unity开发设置_Unity2020.3.38

请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。

m0_71932574的博客 601

mmsegmentation教程1:自定义数据集、config文件修改、训练教程

mmseg使用教程

weixin_42748439的博客 2万+

Linux浅学(欧拉)-文件目录指令

查看文件内容,只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more。删除空目录,若目录下有内容时是无法删除的,若需要删除非空目录,则需要使用rm -rf。-a:显示当前目录所有的文件和目录,包括隐藏的。

eci__的博客 2729

磁编码器选型避坑指南:为什么MT6816比霍尔传感器更适合你的伺服系统?

本文深入对比了MT6816磁编码器与传统霍尔传感器在伺服系统中的应用。MT6816基于AMR技术,对磁场方向敏感而非强度,具备高精度、强抗干扰、高安装容差和极低延时等优势,尤其适合高转速、恶劣环境下的工业场景,能有效提升系统可靠性与长期稳定性。

rainy的博客 1102

euler第二讲笔记

笔记

m0_66470321的博客 2732

cartographer实现纯定位

实现纯定位 (1)因为正常的cartographer的建图的map是由cartographer发布的;如下 rostopic info /map Type: nav_msgs/OccupancyGrid Publishers: * /cartographer_occupancy_grid_node 因此需要把map的发布替换成 <node name="map_server" pkg="map_server" type="map_server" args="/home/lx.

Studying…… 5888

手把手教你学Simulink——基于经典PID控制的电机系统场景实例:步进电机PID位置控制系统的实现

步进电机(Stepper Motor)是一种将电脉冲信号转化为角位移的执行元件,具有结构简单、控制方便、定位精度高等优点,广泛应用于数控机床、机器人、打印机、3D打印机等需要精确定位的场合。传统的步进电机多采用开环控制,但在高速或负载变化较大的情况下容易出现丢步、振荡等问题。为提高控制精度与响应性能,闭环PID控制被引入步进电机的位置控制中,通过编码器或旋转变压器等反馈装置,实现高精度、高稳定性的位置控制。本教程将带你使用构建一个基于PID控制的步进电机位置控制系统仿真模型步进电机建模。

MHD0815的博客 9688

[译]Flutter缓存管理库flutter_cache_manager

本文翻译自pub: flutter_cache_manager | Flutter Package (flutter-io.cn) 译时版本: flutter_cache_manager 3.3.0 v2的破坏性改动 CacheManager v2 当配置自定义 CacheManager 时引入了一些破坏性改动。 查看页面最下方改动的说明 flutter_cache_manager CacheManager 用于下载和缓存应用缓存目录中的文件。 缓存多长时间可通过各种设置来修改。 它使用 Cache-Co

star_nwe的博客 4256

PyTorch深度学习实战(7)——批大小对神经网络训练的影响

在神经网络中,批( batch )是指一次输入网络进行训练或推断的一组样本。批处理( batch processing )是指将这一组样本同时输入网络进行计算的操作。本节中首先介绍批( Batch )的基本概念,并且介绍批大小在神经网络训练过程中的影响。

盼小辉丶的博客 1万+

okhttp下载保存图片并更新图库

实现效果图: 清单文件,下载和读写文件 &lt;!-- 访问网络的权限 --&gt; &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;!-- 文件读取的权限 --&gt; &lt;uses-permission android:name="android.pe...

cf8833的博客 2794

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java实现minio上传、下载、删除文件,支持https访问

MinIO 实现上传、下载、删除文件功能,在之前文章把minio开启了https,结果报PKIX path building failed 的错误

weixin_53799443的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

利用svn上传、更新、添加、删除文件

具体分为以下步骤: 本地建立仓库:在本地新建文件夹,右键 —&amp;gt; TortoiseSVN —&amp;gt; Create repository here; 下载已有仓库:在本地新建文件夹,右键 —&amp;gt; Checkout —&amp;gt; 输入用户名密码、下载的文件路径; 更新本地仓库:选中仓库,右键 —&amp;gt; SVN Update; 上传本地文件:选中仓库,右键 —&amp;gt; SVN Commit...

u013594477的专栏 8万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

php生成文件下载后删除文件,php 下载完成后删除文件

最近遇到一个需求:下载用户上传的图片,但是图片不断更新。1.需要将图片从图片服务器下载到网站后台服务器2.压缩文件夹生成zip压缩包3.下载压缩包4.删除压缩包和临时文件夹其中遇到了一个问题:判断浏览器是否下载完成。从网上找了一个方法,并略做修改。$filePath = "./download_img/temp.zip";$fileDir = "./download_img/temp/";$fil...

weixin_42131541的博客 212

前端文件下载的八种方法(解决pdf、图片在浏览器自动打开问题)

系列文章目录 一、直接使用a标签下载文件(三种方法) 第一种:下载.zip(压缩文件) 第二种:下载.txt(文本文件) 第三种:指定网络地址下载文件 第四种:下载pdf文件(浏览器不自动打开) 二、使用JavaScript(四种方法) 第一种:绑定点击事件 第二种:指定location的href地址 第三种:使用form表单的下载文件 第四种:使用saveAs(url)方法(谷歌、火狐等新浏览器不适用,只支持老的IE6、7、8) 三、使用canvas进行图片下载(防止浏览器自动打开图片) 代码片段如下所示

weixin_46022934的博客 3万+

SpringBoot整合阿里云OSS存储服务 file.transferTo(newFile) oss文件的下载、删除

整合过程参考博客: SpringBoot整合阿里云OSS 其中,transferto()方法,是springmvc封装的方法,用于图片上传时,把内存中图片写入磁盘 参考博客: transferto()方法 把内存中图片写入磁盘 ...

可控的事情要谨慎,不可控的事情要乐观。 1298

Android 图库更新同步问题总结(包含增加图片、删除图片)

Android 图库更新同步问题总结(包含增加图片、删除图片) Android中有时需要更新图库来同步图片等信息。 比如:1. 下载图片成功,并且保存到本地了,此时去图库查看,发现依然没有更新出来; 2. 清空应用内的图片,递归删除某目录下的图片,图库没有及时刷新。 增加图片,更新图库关键代码 在需要更新图库的地方(比如下载图片成功的回调中)调用 // update...

a day a better 3625

php 下载完成后删除文件

最近遇到一个需求:下载用户上传的图片,但是图片不断更新。 1.需要将图片从图片服务器下载到网站后台服务器 2.压缩文件夹生成zip压缩包 3.下载压缩包 4.删除压缩包和临时文件夹 其中遇到了一个问题:判断浏览器是否下载完成。从网上找了一个方法,并略做修改。 $filePath = "./download_img/temp.zip"; $fileDir = "./download_im

wmsjlihuan的专栏 7276

React-native 热更新(1) 脚本与图片更新+图片加载源码分析 android部分

 react-native热更新分两个方面,脚本更新和图片更新,我们将在图片更新的地方分析一下图片加载的源码:1、脚本更新。  a、通过bundle文件更新  bundle文件   bundle文件包含了当前所有脚本中的信息,一开始建项目的时候,在asset中会有一个index.android.bundle文件。之后  每次更新的时候,我们需要通过以下命令生成bundle...

guduyishuai的博客 3256

【微信插件】自动下载微信聊天中的图片、文件和视频

有时候搜索看之前的聊天记录一打开图片全是图片已过期,微信里的设置可能只是控制文件的自动下载,图片并不会自动下载。所以一直想自己来实现微信聊天文件的自动下载, 当收到图片、文件和视频类型的消息时可以主动调用下载的call。先说一下已有插件的一些优化内容。

Qwertyuiop2016的博客 3510

springboot文件上传下载实战 ——文件上传、下载、在线打开、删除

前面我们已经完成了文件的上传功能,经过上传了图片,现在数据库中已经有了几张图片信息,我们点击下载,可以跳出下载界面,并且文件的下载次数会 + 1。之前我们完成了展示所有文件功能,但是由于数据库中没有数据,因此显示的页面为空,现在我们利用文件上传功能往数据库中添加数据。// ResourceUtils.getURL(“classpath:”) 是获取当前文件的resources路径。// 根据 文件信息中文件名字 和 文件存储路径 获取文件真实路径。// 获取文件的原始名称。// 删除数据库中的文件。

2501_90433058的博客 869

js长按删除_海阔视界更新,全新负一屏、批量删除下载等功能来袭

新方圆小棉袄,传说中的贴心小棉袄,宇宙无敌超级厉害。记住我们的付费群(大佬众多):978260150,免费群:11013595391、方圆和海阔的规则导入和支付宝口令类似,将口令全部复制打开最新版软件根据弹窗提示即可快速导入规则;2、公众号内回复视频源、电视直播、首页、VIP解析等关键词即可快速获取各种规则的导入口令;3、有任何问题请在QQ内联系我,公众号内发送消息无法及时回复的哦。海阔...

weixin_39634576的博客 2437
上一篇: 遍历文件夹中的文件(以图片为例)
下一篇: 文件类型
Flykos
博客等级 码龄12年 14粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值