展示
源码
服务器端
const http = require('http');
const url = require('url');
const querystring = require("querystring");
const formidable = require('formidable'); // npm install formidable
const fs = require('fs');
const path = require('path');
var util = require('util');
http.createServer((req, res) => {
res.writeHead(200, {
"Content-Type": "application/json;charset=UTF-8",
"Access-Control-Allow-Origin": "*"
});
const pathname = url.parse(req.url).pathname;
// 文件上传
if (pathname === '/upload') {
const form = formidable({ multiples: true });
form.parse(req, (err, fields, files) => {
try {
if (util.isArray(files.file)) {
for (let i = 0; i < files.file.length; i++) {
fs.readFile(files.file[i].filepath, (err, data) => {
fs.writeFile(path.join('./', files.file[i].originalFilename), data, async (err) => {
console.log(err);
})
})
}
} else {
fs.readFile(files.file.filepath, (err, data) => {
fs.writeFile(path.join('./', files.file.originalFilename), data, async (err) => {
console.log(err);
})
})
}
res.end(JSON.stringify(files));
} catch (error) {
res.end(JSON.stringify(`上传失败${Math.random()}`));
}
})
}
}).listen(8888);
console.log('Server running at http://127.0.0.1:8888/');
移动端
- 布局
- 脚本
using System.Collections.Generic;
using System.IO;
using System.Text;
using Android.App;
using Android.Content;
using Android.Net;
using Android.OS;
using Android.Provider;
using Android.Util;
using Android.Widget;
using Java.IO;
using Java.Lang;
using Java.Net;
namespace SecondaryBlankApp
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : Activity
{
private string TAG = "UploadFile";
// 监听请求返回
private Handler _handler;
// 请求参数View
private TextView _paramsText;
// 请求成功结果
private string _paramsStr;
// 请求结果View
private TextView _resultText;
// 请求成功结果
private byte[] _resultBytes;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
_paramsText = FindViewById(Resource.Id.params_text);
_resultText = FindViewById(Resource.Id.result_text);
var btn01 = FindViewById