kez*_*kez 1 javascript ajax asp.net-mvc file-io json
我想在页面加载时列出文件夹中的所有文件。所以
为此,我刚刚创建了这样的
HTML代码
<input id="idd" type="file" multiple="true" class="file" data-preview-file-type="text">
Run Code Online (Sandbox Code Playgroud)
脚本
@section scripts{
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: '/Home/filesinfolder',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$.each(data, function (index, val) {
$('#idd').append('<li><a href="http://'+ val.Url +'" target="_new">' + val.Url + '</a></li>');
});
},
error: function (xhr, status, err) {
console.log('Response code:' + xhr.status);
console.log('[Error:' + err + '] ' + status);
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
控制器方法
public JsonResult filesinfolder()
{
DirectoryInfo salesFTPDirectory = null;
FileInfo[] files = null;
string salesFTPPath = "C:/filePath";
salesFTPDirectory = new DirectoryInfo(salesFTPPath);
files = salesFTPDirectory.GetFiles();
files = files.OrderBy(f => f.Name).ToArray();
var salesFiles = files.Where(f => f.Extension == ".xls" || f.Extension == ".xml" || f.Extension == ".jps" || f.Extension == ".jpg" || f.Extension == ".jpeg" || f.Extension == ".png");
return Json(salesFiles.ToList());
}
Run Code Online (Sandbox Code Playgroud)
但这根本没有列出任何内容,但是一旦我调试,我就可以看到此filesinfolder方法调用并在文件夹中查找文件。
小智 6
你有很多错误
id="idd"是 an的元素,<input>您不能将<li>元素附加
到 an <input>(仅一个<ul>元素)JsonRequestBehavior.AllowGet因此不会返回任何内容List<FileInfo>但访问Url
不存在的属性。FullName属性,创建
<a href="http://C:/filePath.someFileName.xls也不会导航到服务器上的文件既然您只想要文件名,那么您的代码应该是
html
<ul id="filelist"></ul>
Run Code Online (Sandbox Code Playgroud)
脚本
$(document).ready(function () {
$.ajax({
url: '@Url.Action("filesinfolder", "Home")', // don't hardcode
dataType: "json",
success: function (data) {
$.each(data, function (index, item) {
$('#filelist').append($('<li></li>').text(item));
});
},
error: function () {
}
});
});
Run Code Online (Sandbox Code Playgroud)
请注意该contentType选项不是必需的
控制器
public JsonResult filesinfolder()
{
string salesFTPPath = "C:/filePath";
DirectoryInfo salesFTPDirectory = new DirectoryInfo(salesFTPPath);
IEnumerable<string> files = salesFTPDirectory.GetFiles()
.Where(f => f.Extension == ".xls" || f.Extension == ".xml" || f.Extension == ".jps" || f.Extension == ".jpg" || f.Extension == ".jpeg" || f.Extension == ".png")
.OrderBy(f => f.Name)
.Select(f => f.FullName);
return Json(files, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)