利用node.js android 实现文件上传

1,新建一个node.js项目,并且安装依赖包:formidable 

 2,app.js文件配置如下:

 

    var http = require('http');  
    var fs = require('fs');  
    var formidable = require('formidable');  
      
    var firstPage = function(res){  
        res.writeHead(200, {'Content-Type': 'text/html'});  
        var html = fs.readFileSync(__dirname + '/public/form.html');  
        res.end(html);  
    }  
      
    var resultPage = function(res,data,files){  
        res.setHeader('Content-Type', 'text/html');  
        res.write('<p>thanks ' + data.name + '</p>');  
        res.write('<ul>');  
        console.log(data);  
        console.log(files);  
      
        if (Array.isArray(files.images)) {  
          files.images.forEach(function(image){  
            var kb = image.size / 1024 | 0;  
            res.write('<li>uploaded ' + image.name + ' ' + kb + 'kb</li>');  
          });  
        } else {  
          var image = files.images;  
          var kb = image.size / 1024 | 0;  
          res.write('<li>uploaded ' + image.name + ' ' + kb + 'kb</li>');  
        }  
      
        res.end('</ul>');  
    }  
      
    var server = http.createServer(function(req, res) {  
        if (req.method == 'GET'){  
            return firstPage(res);  
        }  
      
        var form = new formidable.IncomingForm;  
        var data = {};  
        var files = {};  
      
        form.uploadDir = __dirname +'/file';  
        form.keepExtensions = true;  
      
        function ondata(name, val, data){  
            if (Array.isArray(data[name])) {//数组   
                data[name].push(val);  
            } else if (data[name]) {//同key   
                data[name] = [data[name], val];  
            } else {//第一次   
                data[name] = val;  
            }  
        }  
      
        form.on('field', function(name, val){  
            ondata(name, val, data);  
        });  
      
        form.on('file', function(name, val){  
            ondata(name, val, files);  
        });  
        form.on('end', function() {  
            resultPage(res,data,files);   
        });  
      
        form.parse(req);  
      
    });  
    server.listen(8080);  
      
    console.log('listening on http://localhost:8080');  

2,在public 目录下新建一个form.html文件,文件内容如下:

    <html>  
        <body>  
            <form action="/" method="post" enctype="multipart/form-data">  
              <input type="text" name="name" placeholder="Name:" />  
              <input type="file" name="images" multiple="multiple" />  
              <input type="submit" value="Upload" />  
            </form>  
        </body>  
    </html>  

点击上传就可以在网页上实现上传


3,android布局文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>  
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:id="@+id/RelativeLayout1"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:orientation="vertical" >  
      
        <TextView  
            android:id="@+id/textViewInfo"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:layout_alignParentLeft="true"  
            android:layout_alignParentTop="true"/>  
              
        <TextView  
            android:id="@+id/textView1"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_alignParentLeft="true"  
            android:layout_below="@+id/textViewInfo"  
            android:layout_marginLeft="40dp"  
            android:layout_marginTop="20dp"  
            android:text="文件路径"   
            android:textAppearance="?android:attr/textAppearanceMedium" />  
      
        <TextView  
            android:id="@+id/textViewFile"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_alignLeft="@+id/textView1"  
            android:layout_below="@+id/textView1"/>  
      
        <TextView  
            android:id="@+id/textView3"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_alignLeft="@+id/textViewFile"  
            android:layout_below="@+id/textViewFile"  
            android:layout_marginTop="10dp"  
            android:text="上传网址"   
            android:textAppearance="?android:attr/textAppearanceMedium" />  
      
        <TextView  
            android:id="@+id/textViewUrl"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_alignLeft="@+id/textView3"  
            android:layout_below="@+id/textView3"/>  
          
        <WebView   
            android:id="@+id/webViewResult"  
            android:layout_width="fill_parent"  
            android:layout_height="100dp"  
            android:layout_below="@+id/textViewUrl"  
            android:layout_marginTop="30dp"/>  
          
        <Button  
            android:id="@+id/buttonJava"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_alignParentBottom="true"  
            android:layout_marginLeft="60dp"  
            android:text="Java上传" />  
      
        <Button  
            android:id="@+id/buttonApache"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_alignBottom="@+id/buttonJava"  
            android:layout_toRightOf="@+id/buttonJava"  
            android:text="Apache上传" />  
      
    </RelativeLayout>  

即可实现上传功能

你可能感兴趣的:(利用node.js android 实现文件上传)