精华内容
下载资源
问答
  • 文章目录Windows 操作系统下图片形式发送压缩文件1、表现形式2、应用3、如何创建一个这样的文件 Windows 操作系统下图片形式发送压缩文件 1、表现形式 一个文件,双击打开时是一张图片,将后缀改成.zip 即可...

    Windows 操作系统下以图片形式发送压缩文件


    1、表现形式

    一个文件,双击打开时是一张图片,将后缀改成.zip 即可变成一个压缩文件,解压可以提取其中的文件

    2、应用

    1、可以对大部分人隐藏真实文件
    2、相对于创建隐藏文件,该方式更加隐秘
    3、发给别人时可以装逼
    4、秀操作

    3、如何创建一个这样的文件

    1、准备一个压缩文件,一张图片
    2、把这2个文件夹放置到同一个文件夹内
    3、打开cmd.exe
    4、用cd 命令移动到当前文件夹
    5、输入命令

    // 命令运行结构
    copy /b  图片的文件名 + 压缩文件名  目标文件名+图片后缀
    
    // 举例
    // 有一张图片 123.jpg ,一个压缩包 456.zip,那么命令应该这么写
    copy /b 123.jpg+456.zip 789.jpg
    
    // 注意点
    // 网上很多教程会让你把目标文件改成原来的图片的名字,这样做会导致你原来的图片被覆盖
    // 目标文件可以是其它的名字,这样会新创建一个文件,而不是覆盖原文件
    
    
    展开全文
  • 最近项目中是有个发送邮件的需求,但是需要在附件中携带excel附件,这里有两种实现方式,一种是先生成文件,然后发送附件, 一种是不借助文件直接通过流的形式发送附件,这博文主要介绍通过流的方式发送excel 附件:...

    最近项目中是有个发送邮件的需求,但是需要在附件中携带excel附件,这里有两种实现方式,一种是先生成文件,然后发送附件, 一种是不借助文件直接通过流的形式发送附件,这博文主要介绍通过流的方式发送excel 附件:

    1、发送邮件service

    package com.jack.bid.email.service;
    
    
    import java.io.ByteArrayInputStream;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.mail.Address;
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.Part;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.MimeUtility;
    import javax.mail.internet.MimeMessage.RecipientType;
    import javax.mail.util.ByteArrayDataSource;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    import com.jack.common.utils.PropertiesUtils;
    import org.springframework.stereotype.Service;
    
    @Service
    public class BaseMail {
    
        public static Properties email = PropertiesUtils.getProperties("email.properties");
        public static String send_email_account = email.getProperty("send_email_account");
        public static String send_email_pwd = email.getProperty("send_email_pwd");
        public static String email_host = email.getProperty("email_host");
    
        /**
         * 发送邮件
         *
         * @param to        邮件收件人地址
         * @param title     邮件标题
         * @param text      内容
         * @param text      附件标题
         * @param
         */
        public void sendMsgFileDs(String to, String title, String text,String affixName, ByteArrayInputStream inputstream) {
    
            Session session = assembleSession();
            Message msg = new MimeMessage(session);
            try {
                msg.setFrom(new InternetAddress(send_email_account));
                msg.setSubject(title);
                msg.setRecipients(RecipientType.TO, acceptAddressList(to));
                MimeBodyPart contentPart = (MimeBodyPart) createContent(text, inputstream,affixName);//参数为正文内容和附件流
                MimeMultipart mime = new MimeMultipart("mixed");
                mime.addBodyPart(contentPart);
                msg.setContent(mime);
                Transport.send(msg);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public Address[] acceptAddressList(String acceptAddress) {
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address[] tos = null;
            try {
                tos = new InternetAddress[1];
                tos[0] = new InternetAddress(acceptAddress);
            } catch (AddressException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return tos;
        }
    
        public Session assembleSession() {
            Session session = null;
            Properties props = new Properties();
            props.setProperty("mail.smtp.auth", "true");
            props.setProperty("mail.transport.protocol", "smtp");
            props.setProperty("mail.smtp.port", "465");
            props.setProperty("mail.smtp.host", email_host);//邮件服务器
            //开启安全协议
            MailSSLSocketFactory sf = null;
            try {
                sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
            } catch (GeneralSecurityException e1) {
                e1.printStackTrace();
            }
            props.put("mail.smtp.ssl.socketFactory", sf);
            props.put("mail.smtp.ssl.enable", "true");
            session = Session.getDefaultInstance(props, new MyAuthenricator(send_email_account, send_email_pwd));
            return session;
        }
    
        static Part createContent(String content, ByteArrayInputStream inputstream, String affixName) {
            MimeBodyPart contentPart = null;
            try {
                contentPart = new MimeBodyPart();
                MimeMultipart contentMultipart = new MimeMultipart("related");
                MimeBodyPart htmlPart = new MimeBodyPart();
                htmlPart.setContent(content, "text/html;charset=gbk");
                contentMultipart.addBodyPart(htmlPart);
                //附件部分
                MimeBodyPart excelBodyPart = new MimeBodyPart();
                DataSource dataSource = new ByteArrayDataSource(inputstream, "application/excel");
                DataHandler dataHandler = new DataHandler(dataSource);
                excelBodyPart.setDataHandler(dataHandler);
                excelBodyPart.setFileName(MimeUtility.encodeText(affixName));
                contentMultipart.addBodyPart(excelBodyPart);
                contentPart.setContent(contentMultipart);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return contentPart;
        }
    
        //用户名密码验证,需要实现抽象类Authenticator的抽象方法PasswordAuthentication
        static class MyAuthenricator extends Authenticator {
            String u = null;
            String p = null;
    
            public MyAuthenricator(String u, String p) {
                this.u = u;
                this.p = p;
            }
    
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(u, p);
            }
        }
    
    }
      
    
    

    2、相关配置

    email_host = smtp.exmail.qq.com
    send_email_account=*********
    send_email_pwd=*******
    

    利用ByteArrayOutputStream把excel文件输出到bytes[]中,然后由ByteArrayResource包装起来传递给邮件服务。;

    3、我发送的内容就是我上篇博客中,导出的excel的内容,下面先写一个简单的测试类

    	@Test
    	public void sendMailWithExcel() throws IOException {
    
        @Autowired
        private BaseMail mailService;
    
    		String[] headers = {"col1","col2","col3"};
    		// 声明一个工作薄
    		HSSFWorkbook wb = new HSSFWorkbook();
    		// 生成一个表格
    		HSSFSheet sheet = wb.createSheet();
    		HSSFRow row = sheet.createRow(0);
    		for (int i = 0; i < headers.length; i++) {
    			HSSFCell cell = row.createCell(i);
    			cell.setCellValue(headers[i]);
    		}
    		int rowIndex = 1;
     
    		for(int j=0; j<3; j++){
    			row = sheet.createRow(rowIndex);
    			rowIndex++;
    			HSSFCell cell1 = row.createCell(0);
    			cell1.setCellValue(j);
    			cell1 = row.createCell(1);
    			cell1.setCellValue(j+1);
    			cell1 = row.createCell(2);
    			cell1.setCellValue(j+2);
    		}
    		for (int i = 0; i < headers.length; i++) {
    			sheet.autoSizeColumn(i);
    		}
     
    		ByteArrayOutputStream os = new ByteArrayOutputStream(1000);
    		wb.write(os);
    		wb.close();
     
    		ByteArrayInputStream iss = new ByteArrayInputStream(os.toByteArray());
    		os.close();
     
    		mailService.sendMsgFileDs("xjj@qq.com",
    				"attachmentMail subject",
    				"I have an attachment",
                    "attachment name",
    				iss);
     注意:附件需要带后缀,例如上面例子,附件名称可以写 测试.xlsx
    	}
    }
    

    4、这样就可以 不生成中间文件直接 发送附件

    展开全文
  • 背景是需要将跑出来的多个文件压缩成一个文件邮件附件的形式发送出去。 trans运行的结果是多个csv文件:   zip压缩文件配置如下:   邮件附件配置: ...

    背景是需要将跑出来的多个文件压缩成一个文件,以邮件附件的形式发送出去。

    trans运行的结果是多个csv文件:

     

    zip压缩文件配置如下:

     

    邮件附件配置:

    展开全文
  • Vue.js 2.0之全家桶系列视频课程

    万人学习 2018-04-21 16:52:25
    基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI... 采用笔记+代码案例的形式讲解,通俗易懂
  • 在常规的web开发过程中,大部分上传文件都是在web页面端通过表单直接提交,再由服务器端捕获请求来进行处理的。但是在前后端分离趋于一种流行趋势,再加上Android和iOS开发技术日渐成熟,大部分团队都会选择在服务器...

    简述

    在常规的web开发过程中,大部分上传文件都是在web页面端通过表单直接提交,再由服务器端捕获请求来进行处理的。但是在前后端分离趋于一种流行趋势,再加上Android和iOS开发技术日渐成熟,大部分团队都会选择在服务器端仅提供一套通用的webservice数据接口,而web页面、Android和iOS统一都通过这套数据接口来向服务器发送请求和获取数据。

    在这一过程中,大部分的webservice数据接口都会采用xml数据格式或是json数据格式来进行数据请求和处理,在这种情况下,其实来自客户端的请求就可以看作是一个字符串(无论是xml还是json数据)。此时,常规的数据提交完全不存在任何问题,但是附件上传就需要特殊处理了。


    本文简单介绍了如何在web页面端采用Ajax的方式来读取本地的文件,并转换成Base64字符串,以及如何将字符串提交到服务器。

    一、定义文件内容变量

    我们顺着思路一步一步开始,为了更好地方便理解,我们全部采用原生javascript和原生ajax代码,不使用任何第三方类库或组件。

    首先,我们需要定义一个变量,这个变量用来记录需要上传到服务器的本地文件的字符串内容:
    var fileStringBase64;

    二、获取本地文件,并转换为Base64形式的字符串

    然后,我们定义一个方法,这个方法用来将用户选取的本地文件转换成Base64字符串:
    function getStringFromFile(e){
    	//获取文件
    	var file = e.target.files[0];
    
    	/*
    	 * 使用FileReader对象将文件转换为Base64字符串
    	 */
    	var reader = new FileReader();
    	reader.readAsDataURL(this.file,"UTF-8");
    	reader.οnlοad=function(){
    		fileStringBase64 = this.result;
    		fileStringBase64 = fileStringBase64.substring(fileStringBase64.indexOf(",")+1,fileStringBase64.length);
    	}
    }



    注意,在上面的代码中,我们在最后对字符串进行了一次substring操作,目的是去掉字符串中的文件头信息,只保留文件的正文字符串。
    另一个特别需要注意的地方是,较早的一些古老的浏览器可能并不支持FileReader对象,例如某些政府部门的内部信息体系仍然在使用WindowsXP及老式ie浏览器。针对这种情况,本方法就没有效果了。

    最后,我们在<input type="file"/>中定义触发时间,调用上述方法即可:
    <input type="file" οnchange="getStringFromFile()">

    这样一来,用户所选择的本地文件就会被转换成一个字符串,并且保存在变量“fileStringBase64”中了。

    三、向服务器发送请求

    我们以原生Ajax的方式来向服务器端发送文件,
    首先,创建一个request请求对象:
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari等非IE的浏览器
    	 http_request = new XMLHttpRequest();
      	if (http_request.overrideMimeType) {
    		http_request.overrideMimeType('text/xml');
    	}
    } else if (window.ActiveXObject) { // IE浏览器
    	try {
    		http_request = new ActiveXObject("Msxml2.XMLHTTP");
    	} catch (e) {
    		try {
    			 http_request = new ActiveXObject("Microsoft.XMLHTTP");
    		} catch (e) {}
    	}
    }
     
    if (!http_request) {
    	alert("无法创建基于XmlHttp的Ajax请求对象");
    	return false;
    }

    然后,就是向服务器端发送请求了,这里分为4个步骤:
    第一步:定义响应回调方法:
    http_request.onreadystatechange = function(){
    	if (http_request.readyState == 4) {
    		if (http_request.status == 200) {
    			alert(http_request.responseText);
    		} else {
    			alert("请求出现问题,状态码:"+http_request.status);
    		}
    	}
    };

    第二步:设置请求方式及服务器地址:
    http_request.open("POST", "在这里输入服务器地址", true);//以post形式发送请求

    第三步:设置请求头:
    http_request.setRequestHeader('Content-Type', 'text/plain;charset=utf-8');
    注意,我们使用的是“text/plain”的方式,即以流的形式向服务器发送请求数据。

    第四步:设置请求数据:
    http_request.send(fileStringBase64); 
    这这一步,我们将已经变成了字符串形式的文件内容作为向服务器发送的请求数据。


    上面这几段关于原生Ajax的代码非常固定,至少在我十几年的码农生涯中,这段原生Ajax代码完全没有变化过,从最早的ie6浏览器一直到目前的所有主流浏览器都完全支持。你完全可以从Google或者baidu中搜索到一模一样的代码,因为原生Ajax就是这么固定。
    唯一有点可惜的是,经历过jQuery为代表的第三方类库的发展,一直到现今的更多流行的mvvm前端框架设计思想和组件,越来越多的年轻前端开发人员疏忽了原生javascript和原生ajax的力量——其实那才是“洪荒之力”。

    说跑题了。

    基于上述的思路,我整理了一个完整的原生Ajax方法,和一个配套的原生回调方法:
    /**
     * 向服务器发起ajax请求
     * 方法的入参说明如下:
     * paramIn:发送给服务器端的请求参数
     * urlIn:服务器端webservice地址
     * callbackFuncIn:当完成请求以后,调用的用以处理服务器响应参数的回调方法的方法名,该方法接收一个HTTP_REQUEST对象作为入参
     */
    function baseRequest(paramIn,urlIn,callbackFuncIn){
    	var http_request = false;
    	if (window.XMLHttpRequest) { // Mozilla, Safari等非IE的浏览器
    		 http_request = new XMLHttpRequest();
    	  	if (http_request.overrideMimeType) {
    			http_request.overrideMimeType('text/xml');
    		}
    	} else if (window.ActiveXObject) { // IE浏览器
    		try {
    			http_request = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			try {
    				 http_request = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e) {}
    		}
    	}
    	 
    	if (!http_request) {
    		alert("无法创建基于XmlHttp的Ajax请求对象");
    		return false;
    	}
    	
    	http_request.onreadystatechange = function(){baseCallback(http_request,callbackFuncIn)};
    	http_request.open("POST", urlIn, true);
    	http_request.setRequestHeader('Content-Type', 'text/plain;charset=utf-8');
    	http_request.send(paramIn); 
    }
    
    /**
     * 向服务器发起ajax的请求后,接受服务器的响应参数,并调用用户自定义的回调处理方法
     * 方法的入参说明如下:
     * httpRequestIn:发送给服务器端的请求对象
     * callbackFuncIn:当完成请求以后,调用的用以处理服务器响应参数的回调方法的方法名,该方法接收一个HTTP_REQUEST对象作为入参
     */
    function baseCallback(httpRequestIn,callbackFuncIn){
    	if (httpRequestIn.readyState == 4) {
    		if (httpRequestIn.status == 200) {
    			callbackFuncIn(httpRequestIn);
    		} else {
    			alert("请求出现问题,状态码:"+httpRequestIn.status);
    		}
    	}
    }

    然后,我们只需要直接调用这个原生方法就可以了:
    baseRequest("字符串形式的文件内容",
    	"服务器地址",
    	自定义响应回调方法);


    四、服务器端接收文件

    关于如何在服务器端接收请求,并将字符串还原成文件,请看以下链接内容:

    展开全文
  • 1、Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是二进制流文件,只不过我们打开的时候,借助于电脑软件渲染为图片) 上代码片段: 1 byte[] oneshotBytes = reqParms.getBytes(); 2 ...
  • 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 2、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 3、怎么清屏?怎么退出当前命令?怎么执行睡眠?...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    -p,--preserve-timestamps:<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。 -s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。 -S,--suffix=后缀:自行指定...
  • 什么是压缩文件/压缩包?

    万次阅读 2020-08-12 14:13:24
    计算机是二进制的形式来储存所有的文件的,也就是00000001111111类似这种形式,压缩文件就会一种类似编码的形式来储存这些文档,比如四个0连在一起,压缩文件就会4x0的形式储存在计算机里,当然实际的压缩比这...
  • python的requests发送/上传多个文件

    万次阅读 多人点赞 2017-07-10 13:45:32
    在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下: url = "http://httpbin.org/post" data = None files = { ... } r = requests.post(url, data, files=f...
  • 图片的base64位的形式-----&gt;将base64转化为文件流----&gt;传送给后台 逐步解析: step1: 将html转化为图片 我用vue开发, 首先npm install html2canvas html部分: &lt;div class="imageWrapper&...
  • vscode安装使用教程

    万次阅读 多人点赞 2018-12-11 19:18:48
    一、什么是vscode** &nbsp;&nbsp;&nbsp;&nbsp;Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义...
  • 普通的http的post请求的请求content-type类型是:Content-Type:application/x-www-form-urlencoded, 而另外一种形式request payload,其Content-Type为application/jsonimport json url = '...
  • php 发送与接收流文件例子

    热门讨论 2014-10-15 01:42:34
    php 发送与接收流文件例子 sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    在有状态SessionBean中,用累加器,对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
  • 通过Python自动压缩文件发送邮件

    千次阅读 2019-01-20 10:08:09
    前言:因为每次更新好日报程序都要把最新版本发给同事,所以萌生了做个程序自动合并文件——压缩文件——发送邮件——删除文件,其中压缩文件用了网上比较好用的轮子,删除文件夹和文件夹下的所有内容用了shutil....
  • 文件以流的形式传给前端,前端点击按钮下载,将工作遇到的问题进行总结与分享...
  • Java邮件附件的方式发送excel文件

    千次阅读 2019-05-16 14:40:51
    思路:Java创建Excel,返回一个... sendEmail()接受ByteArrayOutputStream 流附件的形式发送出去 创建Excel表格: public class CreatExcel { public static ByteArrayOutputStream creatExcel(String[] t...
  • 如何正文方式正确发送简历?

    千次阅读 2018-06-17 21:25:30
    来源:朗识测评|作者:朗识小编|发表日期:2013-07-29 一般情况下,我们投递简历都会附件形式发送,但是这样简历也难免不了会被忽略,因为HR一般不会下载附件下来看,如果能够正文方式投递网页版简历,效果会好...
  • python+钉钉API实现发送文件消息

    千次阅读 热门讨论 2019-12-10 14:51:31
    ## python3.7+钉钉API实现自动发送文件消息 需求:每天固定时间需要向钉钉群推送数据文件 1.由于钉钉群机器人推送消息类型只支持text,link,markdown等形式,并不支持文件和图片类媒体文件的推送,所以咱们这里...
  • 先看一下效果: ...2、图片转换成文件流的形式,这个Demo是转成base64加密流 核心代码: 1、tcp客户端与服务端的代码这里就不贴了,以前贴过,可以看我以前的帖子。这里贴一下思路代码: 发送图片端:
  • 前因后果(不想看的可以直接看分界线之间的内容): 做一个项目, 前端类似这种按钮: Html代码: <form action=... 选择文件: <input ty...
  • 以前在ASP下,通过BASP21实现类似功能。... 通过以下代码中所使用的技术可以实现如下几个可能的需求 1、在有模板的基础上,针对客户的定制下载。...3、对于一些动态生成文件,比如TXT/CSV等文件,将临时文件及时删除
  • Content-Type是什么意思?

    万次阅读 2018-09-17 14:22:50
    Content-Type代表发送发送的实体数据的数据类型。 比如:Content-Type:text/html; 代表发送发送的数据格式是html post请求肯定要发送数据包; 因此对数据包的Type有专门的限定: Content-Type只能是 application...
  • windows C++使用socket发送和接收文件

    万次阅读 2018-03-26 19:44:07
    如有看不懂的地方建议从这里开始 C++下TCP发送hello world的过程:https://blog.csdn.net/qq_39511059/article/details/79658841大体思路就是将文件分块,然后转化为char流传输。//server.cpp用来接受文件#define _...
  • 在常规的web开发过程中,大部分上传文件都是在web页面端通过表单直接提交,再由服务器端捕获请求来进行处理的。但是在前后端分离趋于一种流行趋势,再加上Android和iOS开发技术日渐成熟,大部分团队都会选择在服务器...
  • 使用websocket发送图片文件

    万次阅读 2015-06-29 16:57:48
    字节,这个大小是可以通过配置文件调整的,但出于整体性能的考虑一般采用默认设置。   通过以上情况可以看出,对于发送图片数据来说(一张图片往往会大于 128KB )我们需要将图片数据进行切分。   应用...
  • 今天学习使用了HttpClient4.2向服务端发送上传文件的请求,由于服务器端MultipartFile形式接收,查询资料后决定使用HttpClient4.2实现,以下是实现代码(仅作测试使用): public void testtaskPost()throws ...
  • js 发送get / post请求下载文件

    千次阅读 2019-09-11 14:12:26
    为何不用ajax发送下载文件请求...文件的下载是二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是ajax无法调用到浏览器的下载处理机制和程序。 下载文件请求发送方式 ...
  • 本例由《qt开发环境 - 简易二进制文件打开,串口自发自收》更改... 通过串口按固定字节大小发送文件  显示串口收到的内容 下面是源代码: 代码下载地址:http://download.csdn.net/download/zn2857/10194028 /*

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 513,542
精华内容 205,416
关键字:

以文件形式发送是什么意思