一个端到端的基于 form 表单的文件上传程序,包含客户端和服务器端

简介: 一个端到端的基于 form 表单的文件上传程序,包含客户端和服务器端

客户端

实际上就是一个简单的 html 网页,源代码如下:

<html>
<form id="fu_form" enctype="multipart/form-data" method="post" action="http://localhost:3003/upload" style="display: inline-block;">
    <input type="file" name="myFileUpload" id="fileUploader-fu" tabindex="-1" size="1" title="Upload your file to the local server">
    <input type="submit" value="Submit">
</form>
</html>

新建一个 .html 文件,把上面的源代码拷贝进去,用浏览器打开,看到如下页面。

注意此时浏览器地址栏的 url:file:///C:/Code/UI5/Walkthrough/110/sample.html


form 的 action 属性,指向硬编码的 “http://localhost:3003/upload”,因此我们还需要编写一个服务器,监听在这个地址上,用于接收 form 上传的本地文件。


服务器端

一个采用 Node.js 开发的应用,单纯的接收客户端上传的文件,打印出文件名和文件大小。

源代码如下:

var multiparty = require('multiparty');
var http = require('http');
//var util = require('util');
const PORT = 3003;
http.createServer(function(req, res) {
  if (req.url === '/upload' && req.method === 'POST') {
    var form = new multiparty.Form();
    form.parse(req, function(err, fields, files) {
      var aResult = [];
      var aUploaded = files.myFileUpload;
      for( var i = 0; i < aUploaded.length; i++){
        console.log('file name: ', aUploaded[i].originalFilename, 'size: ' , aUploaded[i].size);
        aResult.push({
          name: aUploaded[i].originalFilename,
          size:aUploaded[i].size
        });
      }
      res.writeHead(200, { 'content-type': 'text/html' });
      res.end("<p>File uploaded ok!</p>");
    });
    return;
  }
}).listen(PORT);
console.log('listen on port:' + PORT);

新建一个 ui5FileServer.js 文件,将上面的源代码,粘贴进去。

使用方法

执行命令行 npm init 初始化一个 npm 项目,然后将上述 ui5FileServer.js 文件粘贴进去。

package.json 内容可以参考下面的代码:

{
  "name": "sap.m.tutorial.walkthrough.109",
  "version": "1.0.0",
  "author": "SAP SE",
  "description": "最简单的 SAP UI5 本地文件上传的例子",
  "scripts": {
    "start": "ui5 serve",
    "build": "ui5 build"
  },
  "devDependencies": {
    "@ui5/cli": "^2.0.0",
    "express": "^4.12.4",
    "http-proxy": "latest"
  },
  "dependencies": {
    "multer": "^1.4.5-lts.1",
    "multiparty": "^4.2.3"
  }
}

在 npm 项目里,执行 npm install 安装依赖,然后用 node ui5FileServer.js 启动服务器,能看到下列输出:listen on port:3003

说明服务器已经在监听 3003 端口,等待客户端上传文件了。

回到客户端,点击 Choose File 从本地选择一个文件:

下图的含义是选择了一个 1.txt 文件,点击 Submit 即可上传:

点击 Submit 之后,注意到地址栏已经变成了:http://localhost:3003/upload

并且打印出了 File uploaded ok! 的来自服务器端的响应。

这就是我们在客户端网页 action 里编写的服务器端接收文件上传的地址。

这个响应编写在服务器端的第 21 行代码处:

相关文章
|
7天前
|
监控 应用服务中间件 网络安全
Nightingale——部署客户端采集其他服务器状态信息
Nightingale——部署客户端采集其他服务器状态信息
17 1
Nightingale——部署客户端采集其他服务器状态信息
|
4天前
|
API Windows
揭秘网络通信的魔法:Win32多线程技术如何让服务器化身超级英雄,同时与成千上万客户端对话!
【8月更文挑战第16天】在网络编程中,客户/服务器模型让客户端向服务器发送请求并接收响应。Win32 API支持在Windows上构建此类应用。首先要初始化网络环境并通过`socket`函数创建套接字。服务器需绑定地址和端口,使用`bind`和`listen`函数准备接收连接。对每个客户端调用`accept`函数并在新线程中处理。客户端则通过`connect`建立连接,双方可通过`send`和`recv`交换数据。多线程提升服务器处理能力,确保高效响应。
15 6
|
2天前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
3天前
|
JSON 前端开发 JavaScript
Web中的客户端和服务器端
Web中的客户端和服务器端
|
20天前
|
弹性计算 Linux 云计算
云服务器 ECS产品使用问题之怎么快速更新幻兽帕鲁客户端
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
4天前
【qt】客户端连接到服务器
【qt】客户端连接到服务器
14 0
|
4天前
|
存储 Ubuntu 开发工具
如何在 Ubuntu VPS 实例上安装 Chef 服务器、工作站和客户端
如何在 Ubuntu VPS 实例上安装 Chef 服务器、工作站和客户端
5 0
|
5天前
|
Java
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
|
12天前
|
网络安全 数据安全/隐私保护 iOS开发
【Mac os】如何在服务器上启动Jupyter notebook并在本地浏览器Web端环境编辑程序
本文介绍了如何在服务器上启动Jupyter Notebook并通过SSH隧道在本地浏览器中访问和编辑程序的详细步骤,包括服务器端Jupyter的启动命令、本地终端的SSH隧道建立方法以及在浏览器中访问Jupyter Notebook的流程。
20 0
|
1月前
|
安全 网络协议 网络安全
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。

热门文章

最新文章