gpt4 book ai didi

jquery - AJAX 文件上传 - HttpPostedFileBase 参数始终为 null MVC 4

转载 作者:行者123 更新时间:2023-12-01 04:05:38 25 4
gpt4 key购买 nike

我尝试通过 AJAX 请求将 CSV 文件发送到 Controller 操作,但是,HttpPostedFileBase 参数始终为 null。因此,我无法访问我尝试发送的文件的内容。请有人告诉我哪里出了问题来解决这个问题。

这是我的 Controller :

[HttpPost]
public ActionResult ImportCSV(HttpPostedFileBase file)
{
var files = Request.Files.Count; // This returns 1. However, 'file' parameter is null

// Process the CSV file here...

return View();
}

这是我的 HTML:

<table class="fieldset">
<tr>
<td>Select File:</td>
<td>
<!--FILE TEXTFIELD-->
<input type="file" id="file" name="file" class="hide file-upload" />

<!--OVERLAY-->
<div id="filename" class="file-textbox"></div>

<!--ELIPSES-->
<button id="filestyle" class="elipses button green-button">...</button>
</td>
<td>
<!--UPLOAD-->
<button type="button" id="btnUpload" class="button green-button upload">Upload</button>
<div class="loading"></div>
</td>
</tr>
</table>

这是我的 JS:

var UploadModule = (function ($) {

"use strict";

var btnElipses;
var btnChangeUpload;
var btnUpload;
var Files = {};

var init = function () {
btnElipses = $(".elipses");
btnChangeUpload = $(".file-upload");
btnUpload = $(".upload");

bindEvents();
};

var bindEvents = function () {
btnElipses.on("click", browse);
btnChangeUpload.on("change", change);
btnUpload.on("click", upload);
};

var upload = function (e) {

// Prevent default actions
e.stopPropagation();
e.preventDefault();

// The file object is passed through in the event (hopefully)
var csv = new FormData();

// Get file and append to form data
$.each(Files["csv"], function (key, value) {
csv.append(key, value);
});

// Send file
$.ajax({
url: '/Factors/ImportCSV',
type: 'POST',
data: csv,
dataType: "json",
cache: false,
contentType: false,
processData: false,

success: function (data) {
//Handle success
},
error: function (xhr, status, errorThrown) {
//Handle error
}
});
};

var browse = function (e) {
$('#file').click();
};

var change = function (e) {
// Set file name overlay to name of file
$('#filename').text($(e.target).val().split('\\').pop());

// Set value of csv to the file
Files["csv"] = e.target.files;
};

init();

})(jQuery);

最佳答案

您可以直接从Request.Files读取:

 var file = Request.Files[0];

或者:

var file = Request.Files["file"];

其中“file”是输入元素名称

您可能还想阅读this post

关于jquery - AJAX 文件上传 - HttpPostedFileBase 参数始终为 null MVC 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com