100-days-Coding - day8

day8-0808

form表单同时上传文件和数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>form</title>
</head>
<body>
    <div id="content">
        <form id="uploadForm" action="http://localhost:3006" method="POST">
            <input type="file" name="file" id="input-file" value="选择你要提交的文件""><span>文件大小限制在1MB!</span> 

            <input type="text" name="namefield" id="input-name" value="666" style="display: none;">
            <input type="submit" value="提交"" id="btn-submit">
        </form>
    </div>

    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script>

        // ajax form submit
        var upload_form = $("#uploadForm")
        upload_form.submit(function () {
            var form_data = new FormData()
            form_data.append('ID', $('#input-name').val())
            form_data.append('file',$('#input-file')[0].files[0])

            console.log(form_data)
            console.log($('#input-file')[0].files[0])

            $.ajax({
                url: 'http://localhost:3006',
                type: 'post',
                data: form_data,
                cache: false,
                processData: false,
                contentType: false,
                success: function (res) {},
                error: function (e) {}
            })
        })
    </script>
</body>
</html>

Koa作为sever

const Koa = require('koa');
const os = require('os');
const path = require('path');
const koaBody = require('koa-body');
const app = new Koa();

const main = async function (ctx) {
    console.log(ctx.request.body)
    const tmpdir = os.tmpdir();
    const filePaths = [];
    const files = ctx.request.body.files || {};
    console.log(files)

    for (let key in files) {
        const file = files[key];
        const filePath = path.join(tmpdir, file.name);
        const reader = fs.createReadStream(file.path);
        const writer = fs.createWriteStream(filePath);
        reader.pipe(writer);
        filePaths.push(filePath);
        filePaths.push(files[key])
    }

    ctx.body = filePaths;
};

app.use(koaBody({ multipart: true }));
app.use(main)

app.listen(3006, () => {
    console.log('server running ...')
})

未完待续......

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HTML表单 在HTML中,表单是 ... 之间元素的集合,它们允许访问者输入文本、选择选项、操作对象等等,然后将...
    兰山小亭阅读 3,449评论 2 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,258评论 19 139
  • 2015年度手袋行业将有新的突破口 Todywu2015-1-15 大家耳熟能详的手袋款型太多,只要看到一款包,设...
    todywu阅读 606评论 0 51
  • 今天心情不是一般的糟糕,甚至殃及到了最强的家人
    merry120阅读 125评论 0 0