WebApi单html页面使用axios进行文件上传

文件上传和下载
1、单文件上传

后端代码:

[HttpPost("/upload2")]
public  string UploadFile2([FromForm] IFormFile file)
{
    if (file != null)
    {
        var fileDir = "D://picture/";
        if (!Directory.Exists(fileDir))
        {
            Directory.CreateDirectory(fileDir);
        }
        //上传的文件的路径
        string filePath = fileDir +file.FileName;
        using (var fs = System.IO.File.Create(filePath))
        {
            file.CopyTo(fs);
        }
        return "上传成功";
    }
    else
    {
        return "上传失败";
    }
}

或者通过 Request.Form.Files[0]获取到文件对象
    
[HttpPost("/upload2")]
public  string UploadFile2()
{
    var file = Request.Form.Files[0];
}

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue3</title>
    <script src="https://unpkg.com/vue@3"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="app">
        <input type="file" ref="fileInput"/>
        <input type="button" value="上传" @click="upload"/>
    </div>
</body>
<script>
    const { createApp, ref } = Vue
    const app = createApp({
        setup() {
            const fileInput = ref(null);
            const upload=function(){      
                const files = fileInput.value.files;
                if(files.length<=0)return;
                const file = files[0];
                const formData = new FormData();
                formData.append("file", file);
                axios.post("http://localhost:5102/upload2", formData).then(
                    res=>{
                        console.log(res)
                    }
                )
            }
            return {
                upload,
                fileInput
            }
        }
    })
    app.mount("#app")
</script>
</html>
2、多文件上传

注意:input标签中的multiple属性设置后可以选择多个文件

后端代码:

[HttpPost("/upload3")]
public string upload()
{
    IFormFileCollection form= Request.Form.Files;
    if (form!=null)
    {
        foreach (FormFile file in form)
        {
            if (file != null)
            {
                string fileDir = "D://picture1/";
                if (!Directory.Exists(fileDir))
                {
                    Directory.CreateDirectory(fileDir);
                }
                string filePath = fileDir + file.FileName;
                using (var fileStream = System.IO.File.Create(filePath))
                {
                    file.CopyTo(fileStream);
                }
            }
        }
        return "上传成功";
    }
    return "上传失败";
}

前端代码:

<!--文档声明,声明当前网页的版本-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue3</title>
    <script src="https://unpkg.com/vue@3"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="app">
        <input type="file" ref="fileInput" multiple="multiple"/>
        <input type="button" value="上传" @click="upload"/><br/>
        {{ message }}
    </div>
</body>
<script>
    const { createApp, ref } = Vue
     const app = createApp({
        setup() {
            const fileInput = ref(null);
            const message=ref('')
            const upload= function(){      
                const files = fileInput.value.files;
                var formData = new FormData();
                for(var i in files){
                    formData.append('file',files[i])
                }
                axios.post("http://localhost:5146/upload3", formData).then(
                    res=>{
                        message.value=res.data
                    }
                )
            }
            return {
                message,
                upload,
                fileInput
            }
        }
    })
    app.mount("#app")
</script>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂人开飞机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值