nodejs 简单http 文件上传demo

// 这是一个简单的Node HTTP,能处理当前目录的文件
// 并能实现良种特殊的URL用于测试
// 用http://localhost:8000 或http://127.0.0.1:8000 连接这个服务器

// 首先,加载所有要用的模块
var http = require(‘http‘);        // HTTP服务器API
var fs = require(‘fs‘);            // 文件系统API

var server = new http.Server();    // 创建新的HTTP服务器
var port = 8000;
server.listen(port);            // 在端口8000伤运行它
var log = require(‘util‘).log;
log(‘Http Server is listening ‘ + port + ‘ port.‘);
// Node使用‘on‘方法注册事件处理程序
// 当服务器收到新请求,则运行函数处理它
server.on(‘request‘, function(request, response) {
    var filename = null;
    // 解析请求的URL
    var url = require(‘url‘).parse(request.url);
    switch(url.pathname) {
    case ‘/upload‘:
        var _fileName = request.headers[‘file-name‘];
        log(_fileName);
        request.once(‘data‘, function(data) {
            // 大文件
//            var fis = fs.createWriteStream(‘/txt.txt‘);
//            fis.write(data);
//            fis.end();
            fs.writeFile(_fileName, data);
            response.end();
        });
        break;
    case ‘/‘ || ‘/index.html‘ :
        filename = ‘index.html‘;
    default:
        filename = filename || url.pathname.substring(1);  // 去掉前导‘/‘
        // 基于其扩展名推测内容类型
        var type = (function(_type) {
            switch(_type) { // 扩展名
            case ‘html‘:
            case ‘htm‘: return ‘text/html; charset=UTF-8‘;
            case ‘js‘: return ‘application/javascript; charset=UTF-8‘;
            case ‘css‘: return ‘text/css; charset=UTF-8‘;
            case ‘txt‘: return ‘text/plain; charset=UTF-8‘;
            case ‘manifest‘: return ‘text/cache-manifest; charset=UTF-8‘;
            default: return ‘application/octet-stream‘;
            }
        }(filename.substring(filename.lastIndexOf(‘.‘) + 1)));
        // 异步读取文件,并将内容作为单独的数据块传回给回调函数
        // 对于确实很大的文件,使用API fs.createReadStream()更好
        fs.readFile(filename, function(err, content) {
            if (err) { // 如果由于某些原因无法读取文件
                response.writeHead(404, {‘Content-type‘ : ‘text/plain; charset=UTF-8‘});
                response.write(err.message);
            } else { // 否则读取文件成功
                response.writeHead(200, {‘Content-type‘ : type});
                response.write(content); // 把文件内容作为响应主体
            }
            response.end();
        });

    }
});

index.html

<html>
<head>
<title>file test</title>
<script>
window.onload=function(){
    var files = document.getElementsByTagName(‘input‘),
    len = files.length,
    file;
    for (var i = 0; i < len; i++) {
        file = files[i];
        if (file.type !== ‘file‘) continue; // 不是文件类型的控件跳过
        file.onchange = function() {
            var _files = this.files;
            if (!_files.length) return;
            if (_files.length === 1) { // 选择单个文件
                var xhr = new XMLHttpRequest();
                xhr.open(‘POST‘, ‘http://localhost:8000/upload‘);
                var filePath = files[0].value;
                xhr.setRequestHeader(‘file-name‘, filePath.substring(filePath.lastIndexOf(‘\\‘) + 1));
                xhr.send(_files[0]);
            } else { }
        };
    }
};
</script>
</head>
<body>
    <input type="file" />
</body>
</html>

访问http://localhost:8000/

nodejs 简单http 文件上传demo

时间: 2024-11-05 19:44:56

nodejs 简单http 文件上传demo的相关文章

jfinal初接触,一个简单的文件上传例子

写了个上传的小例子. 从jfinal官网下载jfinal-1.8_demo_for_jsp.zip 然后下载jfinal-1.8-lib.zip 按要求删掉该删除的,引入一些包,之后的项目结构: DemoConfig.java中配置路由,只留下了根路径: /** * 配置路由 */ public void configRoute(Routes me) { me.add("/", CommonController.class); //me.add("/blog", B

python写个简单的文件上传是有多难,要么那么复杂,要么各种,,,老子来写个简单的

def upload(url,params): ''' 上传文件到服务器,不适合大文件 @params url 你懂的 @params {"action":"xxx","@file","file_path"} 普通参数 key:value 文件key头部加@ ''' import os import urllib2 BOUNDARY = "0450de9528f040078csuxianbaozic06"

基于Java的一个简单的文件上传下载功能

最近在公司给客户端做接口,有一个图片上传和文件下载的功能,本来想用Struts来做文件上传下载,但是看了下公司好像没有这个配置,然后看了下同事的代码,才发现原来Apache也可以简单的实现文件上传下载. 首先引入commons-io-2.2.jar FileUtils为我们提供了很多对文件的操作的方法,比如上传整个文件夹的文件.上传单个文件等 然后请看代码下载: public static void uploadFile(String targetDirectory,String targetF

使用jsp/servlet简单实现文件上传与下载

使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用jsp与servlet实现文件上传与下载. 在写代码之前,我们需要导入两个额外的jar包,一个是common-io-2.2.jar,另一个是commons-fileupload-1.3.1.jar,将这个两个jar 包导入WEB-INF/lib目录里. 首先,想要在web端即网页上实现文件上传,必须要提供

利用Socketserver实现简单的文件上传

利用Socketserver实现简单的文件上传 server.py #!/usr/bin/env python #coding:utf-8 import SocketServer import os class MyServer(SocketServer.BaseRequestHandler):     def handle(self):         base_path = 'C:/temp'         conn = self.request                 print

【Jsp】使用jspsmartupload完成简单的文件上传系统

请不要妄想,一个html的file控件,再加上javascript与jquery语句就可以完成文件上传, 文件上传系统从来是需要配合服务器来完成的 用户把自己的文件上传到服务器上 文件上传系统是很复杂的一件事. html的file控件向动态网页语言以post方式通过enctype="multipart/form-data"解码成二进制文件就不管了 动态网页需要对其通过asp,jsp,php,asp.net编程,才能正常把文件保存到服务器中 网络上对文件处理的方法是五花八门,让人无从下手

DVWA靶机--简单的文件上传漏洞

简单的文件上传漏洞(靶机安全级别:low) 事先准备好一句话木马,密码为pass 上传一句话木马,显示上传路径(一般网站是不会显示路径的,这里靶机为了方便你测试漏洞,直接显示出了路径: ../../hackable/uploads/pass.php succesfully uploaded!) 我们先尝试打开看看,将路径拼接到url后面:http://192.168.147.137/dvwa/hackable/uploads/pass.php 访问成功,但是没有显示任何东西(因为是php文件)

nodejs 实现简单的文件上传功能

首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传功能,优点:浏览器兼容好. 3.通过xhr level2的异步请求,可以百度formData对象. 这里使用2做个练习. node插件请看下package.json文件 { "name": "upload", "version": "0.1

nodejs+ajax实现简单的文件上传功能

app.js中引入express的第三方中间件multer实现文件上传功能. var multer = require('multer');//用express的第三方中间件 multer 实现文件上传功能. app.use(multer({//设置文件上传到的位置 dest: './public/images/upload', rename: function (fieldname, filename) { return filename; } })); 路由 app.post('/uploa