java本地或者服务端文件下载

首先说一下最简单的下载,可以使用a标签中的download属性,直接可下载。

例如:下面链接,href写文件或者图片的地址,后面跟上download属性即可,"="后面是定义下载文件的名称。

<a href="/images/myw3schoolimage.jpg" download="w3logo">

就这么简单,大家上传或者下载完了后,可以给表中专门加一个字段来存放地址,这样呢就很方便提供大家直接找到文件了。

下面继续说下载本地的方法:

页面呢就是统一点击按钮,触发事假执行:

 function downloadTemplate(id){
	  window.location.href = "/****/****/****?templateId="+id;
  }

java代码

    	Template template = iTemplateService.queryTemplate(templateId);
    		if (null == template) {
    			  logger.info("template为空,加载模板失败");
    			 /* rtnMap.put("errMsg", "加载失败,请稍微再试");
    			  return JsonUtils.toJsonNoException(rtnMap);*/
			}
    		// 下载本地文件
            String fileName = template.getName()+".xml".toString(); // 文件的默认保存名
            // 读到流中
            InputStream inStream = new FileInputStream(template.getPath());// 文件的存放路径
            // 设置输出的格式
            response.reset();
            response.setContentType("bin");
            response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
            // 循环取出流中的数据
            byte[] b = new byte[100];
            int len;
            try {
                while ((len = inStream.read(b)) > 0)
                    response.getOutputStream().write(b, 0, len);
                inStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
 // path是根据日志路径和文件名拼接出来的
  File file = new File(template.getPath());
 String filename = file.getName();// 获取日志文件名称
 InputStream fis = new BufferedInputStream(new FileInputStream(template.getPath()));
 byte[] buffer = new byte[fis.available()];
 fis.read(buffer);
 fis.close();
 response.reset();
 // 先去掉文件名称中的空格,然后转换编码格式为utf-8,保证不出现乱码,这个文件名称用于浏览器的下载框中自动显示的文件名
 response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.replaceAll(" ", "").getBytes("utf-8"),"iso8859-1"));
 response.addHeader("Content-Length", "" + file.length());
 OutputStream os = new BufferedOutputStream(response.getOutputStream());
 response.setContentType("application/octet-stream");
 os.write(buffer);// 输出文件
 os.flush();
 os.close(); 

以上两种方法二选一都可。希望可以对大家有帮助,有问题请留言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java Socket技术从服务端下载文件到客户端,可以按照以下步骤进行: 1. 在服务端创建一个ServerSocket,等待客户端连接。 2. 当客户端连接到服务端时,服务端创建一个FileInputStream对象,读取要下载的文件,然后通过Socket的OutputStream将文件内容发送给客户端。 3. 在客户端创建一个Socket,连接到服务端。连接成功后,客户端创建一个FileOutputStream对象,用于保存从服务端接收到的文件内容。 4. 客户端通过Socket的InputStream接收服务端发送过来的文件内容,并将文件内容写入到FileOutputStream对象中。 以下是一个简单的示例代码,演示如何使用Java Socket技术从服务端下载文件到客户端: 服务端代码: ```java import java.io.*; import java.net.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(5555); System.out.println("Server started, waiting for client..."); Socket socket = serverSocket.accept(); System.out.println("Client connected"); File file = new File("example.txt"); FileInputStream fis = new FileInputStream(file); OutputStream os = socket.getOutputStream(); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fis.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); } fis.close(); os.close(); socket.close(); serverSocket.close(); System.out.println("File sent to client"); } } ``` 客户端代码: ```java import java.io.*; import java.net.*; public class Client { public static void main(String[] args) throws IOException { Socket socket = new Socket("localhost", 5555); System.out.println("Connected to server"); InputStream is = socket.getInputStream(); FileOutputStream fos = new FileOutputStream("example.txt"); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { fos.write(buffer, 0, bytesRead); } fos.close(); is.close(); socket.close(); System.out.println("File received from server"); } } ``` 这个示例程序将服务端的"example.txt"文件发送给客户端,客户端接收到文件后保存到本地。在实际使用中,需要根据实际情况修改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值