精华内容
下载资源
问答
  • 由于我们一方需要发送文件,另一方需要接收文件,所以这个解决方案中需要包括两部分—— 请求端POST文件到服务器; 服务器端接收并解析收到的文件。 问题解决 请求端发送文件 请求端发送文件,是使用requests...

    问题提出

    最近遇到个需求,需要将doc/docx/pdf/xls等格式的文件发送到服务器,交给程序去解析。所以很自然地想到了使用flask。但之前我没有用flask传输过文件,所以这里经过了一些调研和尝试后,找到了一种很方便的方法,在这里分享一下

    由于我们一方需要发送文件,另一方需要接收文件,所以这个解决方案中需要包括两部分——

    • 请求端POST文件到服务器;
    • 服务器端接收并解析收到的文件。

    问题解决

    请求端发送文件

    请求端发送文件,是使用requests执行的。发送的文件,实际上发送的应该是该文件的二进制iostream。最终按照flask的接口要求,将之打包成一个Python-dict。具体操作见code:

    import requests
    
    data = {'file': open('/path-to-your-file/test.doc', 'rb')}
    rr = requests.post('http://xxx.xx.xxx.x:40000/convert', files=data)

    如以上code,服务的端口是40000。具体要传送的数据,feed到request.post的``files``参数上

    服务器端接收并解析文件

    服务器端接收文件,使用flask执行的。对于发送过来的文件,我们直接使用file.save("your-path")方法存储,然后再从存储的路径下,按照程序需要读取或者使用,完成本次文件的解析操作。具体见code:

    from run_oa_con import extract_single
    from flask import Flask,request
    import json, os
    
    app = Flask(__name__)
    
    @app.route('/convert', methods=['POST'])
    def convert():
        ff = request.files['file']         # 获取二进制文件流。注意,'file'这个参数,来自于请求端POST时的dict的key的取值
        save_path = './your-save-path/'    # 文件的存储地址
        ff.save(os.path.join(save_path, ff.filename))    # 直接调用flask提供的save()函数,将文件存到指定路径
        try:
            dic, state = extract_single(os.path.join(save_path, ff.filename))
        except Exception as e:
            print(e)
            dic, state = {}, 0
        res = json.dumps({'data':dic, 'success': state}, ensure_ascii=False)
        return res
    
    if __name__ == '__main__':
        app.run(port=40000, host='0.0.0.0')   # 加上`host='0.0.0.0'`,即可以让你的服务监听所有公网ip,而不是只有本地请求才能访问

    如上,关键代码只有convert()函数的前三行,整体过程清晰简单

    展开全文
  • 奇怪的问题 在微信发送文件多次提醒时,查看了文件被占用情况,发现并未被占用, 为了解决疑惑,尝试多方发送 同一个文件发送钉钉就完全没有问题,发送微信却总...(其实就是压缩一下,将压缩文件发过去即可) ...

    奇怪的问题

    在微信发送文件多次提醒时,查看了文件被占用情况,发现并未被占用,
    为了解决疑惑,尝试多方发送
    同一个文件,发送钉钉就完全没有问题,发送微信却总提示“文件占用,无法发送”
    可能是微信尚不支持以文件方式发送,

    解决方案

    右击文件夹–发送到–压缩文件夹–将压缩文件发送到微信
    (其实就是压缩一下,将压缩文件发过去即可)
    在这里插入图片描述

    展开全文
  • TCP文件服务器的实现,可以在TCP服务器的基础上增加文件发送逻辑。参阅TCP文件服务器的实现。【https://blog.csdn.net/lusanshui/article/details/88565806 】 代码之路 直接给出完整的TCP文件服务器代码。 MyFile...

    简述

    TCP文件服务器的实现,可以在TCP服务器的基础上增加文件发送逻辑。参阅TCP文件服务器的实现。【https://blog.csdn.net/lusanshui/article/details/88565806

    代码之路

    直接给出完整的TCP文件服务器代码。
    MyFileServer类的头文件如下:

    #include <QTcpServer>
    #include <QTcpSocket>
    #include <QDataStream>
    #include <QFile>
    #include <QHostAddress>
    #include <QIODevice>
    #include <QThread>
    
    class MyFileServer : public QObject
    {
    	Q_OBJECT
    public:
    	MyFileServer(QObject *parent = 0);
    	~MyFileServer();
    signals:
    	void startSendFile(QString filename);
    private slots:
    	void acceptFileConnection();
    	void updateFileProgress();
    	void displayError(QAbstractSocket::SocketError socketError);
    	void filesocketDisconnect();
    	void sendFile(QString filename);
    private:
    	QString getFileFullPath(QString tmp); //获取待发送的文件路径
    private:
    	QTcpServer *fileserver;
    	QTcpSocket *filesocket;
    	QThread *m_thread;
    	
    	MyDatastream m_DATAstream;
    	SingleFile m_SingleFile;	
    }
    

    MyFileServer类的源文件如下:

    MyFileServer::MyFileServer(QObject *parent) : QObject(parent)
    {
    	m_thread = new QThread();
    	filesocket = new QTcpSocket();
    	fileserver = new QTcpServer();
    	//listening
    	fileserver->listen(QHostAddress::Any, 6001);
    	connect(fileserver, SIGNAL(newConnection()), this, SLOT(acceptFileConnection()));
    	filesocket->moveToThread(m_thread);
    	fileserver->moveToThread(m_thread);
    	this->moveToThread(m_thread);
    	m_thread->start();
    }
    
    MyFileServer::~MyFileServer()
    {
    	m_thread->quit();
    	m_thread->wait();
    	delete m_thread;
    	filesocket->close();
    	delete filesocket;
    	fileserver->close();
    	delete fileserver;
    }
    
    void MyFileServer::acceptFileConnection()
    {
    	filesocket = fileserver->nextPendingConnection();
    	connect(filesocket, SIGNAL(readyRead()), this, SLOT(updateFileProgress()));
    	connect(filesocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(displayError(QAbstractSocket::SocketError)));
    	connect(filesocket, SIGNAL(disconnected()), this, SLOT(filesocketDisconnect()));
    	connect(this, SIGNAL(startSendFile(QString)), this, SLOT(sendFile(QString)));
    }
    
    void MyFileServer::updateFileProgress()
    {
    	//receive msg
    	if (filesocket->bytesAvailable() <= 0)
    	{
    		return;
    	}
    	QByteArray singleBuffer = filesocket->readAll();
    	if (singleBuffer.size() == 14 && singleBuffer[0] == 0xF7) //双方约定
    	{
    		m_SingleFile = m_DATAstream.ReadSingleFile(singleBuffer); //按约定转信息,得到文件名等信息
    		QString tmpFilename = m_SingleFile.fileDataInfo.strName;
    		QString tmpFullFilename = getFileFullPath(tmpFilename); //根据文件名得到全路径
    		emit startSendFile(tmpFullFilename);
    	}
    }
    
    void MyFileServer::displayError(QAbstractSocket::SocketError socketError)
    {
    	qDebug() << filesocket->errorString();
    	filesocket->close();
    }
    
    void MyFileServer::filesocketDisconnect()
    {
    	filesocket->deleteLater();
    }
    
    void MyFileServer::sendFile(QString filename)
    {
    	QFile localFile(filename);
    	if (!localFile.open(QFile::ReadOnly))
    	{
    		qDebug() << "cannot open file which need to send!";
    		return;
    	}
    	QByteArray  totalba = localFile.readAll();
    	filesocket->write(totalba);
    }
    
    QString MyFileServer::getFileFullPath(QString tmp)
    {
    	QString fullpath;
    	//...
    	return fullpath;
    }
    

    总结

    文中监听端口号6001,每收到约定好的字符串文件发送请求,解析文件名并发送文件内容。
    在工程的pro文件中不要忘记把network模块加入进来。

    展开全文
  • 适用发送文件流 转载

    适用发送文件流

    转载

     

     

     

     

    展开全文
  • QT发送文件

    千次阅读 2012-11-05 14:17:12
     发送数据时我们要先发送文件的总大小,然后文件名长度,然后是文件名,这三部分我们合称为文件头结构,最后再发送文件数据。所以在发送函数里我们就要进行相应的处理,当然,在服务器的接收函数里我们也要进行相应...
  • 使用HttpClient发送InputStream对象及发送文件

    万次阅读 热门讨论 2017-05-26 00:17:03
    最近在做的东西中有这样一个需求要把一个文件上传到服务器A上,再由服务器A上传到服务器B上,而服务器A上传到服务器B的这个请求是通过HttpClient发送的。如果是发送文件的话很好办,但是现在问题的难点是服务器A通过...
  • 现在可以在微信公众平台发文件了。 借助“微附件”小程序,可以很容易实现:微信公众号文章发送文件, 自定义菜单发送文件,自动回复一个文件。 微信公众号的粉丝点击文件名字,就可以下载文件。 上传文件大体上...
  • 把数据通过WinHex写入文件中, 用网络调试助手调试,发送16进制文件
  • MFC 串口发送文件

    千次阅读 2015-10-23 15:41:33
    MFC 串口发送文件 以下代码在龚建伟的串口源码代码上修改而来! 因为龚建伟的串口源码发送文件错误,故作了下修改,可以发送文件了,希望可以帮助到需要的童鞋们! 经过调试,终于把这段代码给写好啦! 先通过...
  • vc利用串口发送文件

    千次阅读 2016-06-22 11:01:50
    自己写的一个示例程序,功能有: 1:串口功能:打开关闭串口; 2:选择文件功能; 3:发送文件功能; 4:取消发送功能; 5:取余计算功能; 6:窗口置顶功能; 7:打开网页功能; 下面是应用示意图
  • 02 Qt发送文件和接收

    千次阅读 2018-09-06 13:02:40
    借助上一篇文章的内容,在原有的TCP通讯的基础上,在服务端和客户端之间发送文件。 首先把在客户端加一个用于显示发送进度的进度条,在服务器端把原有的发送和关闭换为选择和发送,如下图所示 在客户端连接...
  • websocket服务端如何分段发送文件给客户端,网上大部分都是客户端分段发送给服务端
  • 基本简介:本次文件传输的实现主要是通过客户端向服务器发送下载请求,然后在服务器中找到对应的文件并打开文件,再继续向客户端传送文件,而客户端就在不停的接收。这是因为文件可能比较大,一个缓冲数组只能保存一...
  • HttpClient post发送文件

    千次阅读 2018-01-29 10:54:45
    客户端 /** * 发送文件对象到服务端 * @param file * @param url * @param params * @param charset * @param connectTimeout * @param socketTimeout * @return */ public
  • c++ socket发送文件-客户端-服务端

    千次阅读 2018-10-08 18:01:10
    发送文件的人暂时称为客户端,客户端实现思想如下: --- 创建socket 连接服务器 读取文件到buffer 发送给客户端 传文件协议是4个字节的文件大小,32个字节的SHA256校验,后面接文件内容(可以自行设计,这里...
  • 企业微信机器人发送文件 php demophp实现企业微信机器人发送文件 php实现企业微信机器人发送文件 下载链接:企业微信机器人发送文件 php demo 如下图所示: 代码如下:
  • python发送文件到服务器

    千次阅读 2019-05-11 18:44:51
    需求:django后台收到文件后,将该文件发送到别的服务器上 第一次接触,功能感觉和linux中的scp命令一样,于是百度查了下python能否实现scp命令,发现是通过python中的paramiko模块来实现的,具体实现的代码如下: ...
  • Android调用系统分享实现发送文件

    千次阅读 2019-09-02 09:14:39
    Android调用系统分享界面发送文件 前段时间需要实现项目内发送文件到qq、微信好友 找了很多的办法 最后采取这个办法 调用系统的分享 setClassName这个方法是用来固定渠道的 可以写 也可以不写 如果不写那就会弹窗...
  • 此软件来自一次课程设计,需要在PC端打开系统选择蓝牙对话框并与目标蓝牙进行连接,配对成功后,可以打开系统选择文件对话框,选择好要发送文件后,可以向目标蓝牙发送文件,也可以向目标蓝牙发送指定字符。...
  • RestTemplate 发送文件

    千次阅读 2017-03-03 14:43:00
    resttemplate 发送 inputstream流到服务端 客户端 RestTemplate restTemplate = new RestTemplate(); SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); ...
  • windows给centos服务器 发送文件

    千次阅读 2018-08-02 16:13:12
    服务器端打开sshd服务 1查看是否打开sshd服务 systemctl status sshd.service 2启动该服务 systemctl start sshd.service ...一、window发送文件至 centos端 window下载PuTTY,使用PuTTY-v0.60版本,将PSCP....
  • java 利用http发送文件

    千次阅读 2019-07-23 16:58:22
    发送方: import java.io.BufferedReader; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; import java.sql.SQLOutput; import java.text.ParseException; import java....
  • adb 发送文件到Android设备和从Android手机复制文件

    万次阅读 多人点赞 2019-01-03 11:27:54
    2,PC端进入命令窗口(win +R 组合键后,输入cmd) 3,adb push C:\Users\Administrator\Desktop\test.jpg sdcard 注:C:\Users\Administrator\Desktop\test.jpg是PC端文件存放路径;sdcard 是Android设备存放路径 ...
  • 利用接口发送文件

    千次阅读 2016-07-12 17:59:10
    //向向网格化平台发送图片  public static void main(String[] args) throws Exception{  String response="";  PostMethod postMethod = new PostMethod("http://172.16.2.79:8080/zdxqcg/api/workflow/file"); ...
  • C# socket发送(接收)文件

    热门讨论 2010-06-23 11:44:01
    C#使用socket发送(接收)文件的程序,任何文件均可。 其中SingleSendForm是一次发送一个文件,MultiSendForm可以一次选择多个文件,然后依次发送
  • python 钉钉 自动发送文件

    千次阅读 2020-07-07 15:14:41
    添加发送文件到群的权限 添加企业会话即可 开始写代码 注意:字符串星号要修改为你自己的,文末说明方法 import requests import json def getAccess_token(): appkey = '****' appsecret = '****
  • 各位前辈: 如何用sendfile发送大于4g的文件! sendfile通常可以发送多大的文件,为什么3.5g的文件发不出去
  • 上位机通过串口向开发板发送文件

    千次阅读 2018-10-22 22:51:16
    背景 每次我从电脑上copy文件到开发板上都是把udisk拔下来,插到上位机上去copy,插插拔...sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 (rz...
  • hook QQ发送文件对话框

    2016-12-20 13:22:06
    在windows下,想去hook QQ的发送文件的对话框, 查了一下windows下有一个getopenfilename和getsavefilename函数 但是hook之后下断点一直进不去函数 不知道是我的编码有问题,还是QQ的那个对话框不是用的这个函数
  • Scp记住密码,发送文件到远程服务器a) Centos下安装sshpassi. Yum install sshpassb) 创建秘钥文件,保存服务器远程登录密码i. Vim /root/p :p文件内容为密码c) 远程通过秘钥文件发送文件到远程服务器i. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,144,778
精华内容 857,911
关键字:

怎样发送文件