.net core 上傳文件時需要注意的坑


 

.net core上傳文件時的參數通常是

public async Task<Result<bool>> Improt(IFormFile file){}
public async Task<Result<bool>> Improt(IFormFileCollection file){}

然而這樣在前端傳值的時候返回值會是null

需要再參數前面添加[FromForm]

public async Task<Result<bool>> Improt([FromForm]IFormFile excelfile){}

改完之后,在前端發送請求的時候還需要注意,普通的ajax請求並不能把文件傳到后台,需要修改一定的參數,或者使用表單提交。

前端代碼如下:

<form id="form1" method="post" action="" enctype="multipart/form-data">
        <div class="layui-form-item">
            <div class="layui-input-block">
                <input type="file" id="fileUp" name="excelfile" lay-verify="title" autocomplete="off">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button type="button" class="layui-btn layui-btn-primary" onclick=" return upload()">確認導入</button>
            </div>
        </div>
    </form>
用ajax請求以表單的方式調用你的api接口
<script type="text/javascript">
        function upload() {
            var fileM = document.querySelector("#fileUp");
            var fileObj = fileM.files[0];
            if (fileObj == null) {
                alert("請先上傳文件再提交!");
                return;
            }
            if (confirm("是否確認此操作?") == false) {
                return;
            }

            window.isLoading = layer.msg('正在導入,請稍后...', {
                icon: 16,
                shade: 0.3,
                time: 0
            });
        //使用formdata對象獲取表單的數據
var formData = new FormData(document.getElementById('form1')); $.ajax({ url: 你的url, type: 'POST', data: formData, processData: false, contentType: false, xhrFields: { withCredentials: true }, crossDomain: true, success: function (obj) { if (obj.flag) { layer.alert("導入成功!"); } else { layer.alert(obj.msg, { icon: 2 }); } layer.close(window.isLoading); window.isLoading = null; }, error: function (obj) { layer.alert('網絡繁忙,請刷新重試!!', { icon: 2 }); layer.close(window.isLoading); window.isLoading = null; } }) } </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM