Я публикую веб-приложение на сервере VM в домене. Я хочу позволить пользователям загружать файл Excel на свой локальный компьютер. Я хочу показать Save File Box и спросить пользователя о FileName и FilePath? Мой простой не работает, он сохраняет только файл на сервере. Я удалил SQL настройки запросов и соединений в следующем примере:
public ActionResult ZW2(ZW_Query model)
{
string parametra = model.paremetr1;
string parametrb = model.paremetr2;
string parametrc = model.paremetr3;
string parametrd = model.paremetr4;
string parametre = model.paremetr5;
if (parametra == "*")
{
parametra = "%";
}
else
{
parametra = model.paremetr1;
}
List<Models.ZWPub> list = new List<Models.ZWPub>();
try
{
using (SqlConnection con = new SqlConnection())
{
String sql;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(sql, con);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
string filename = "Zamowienia.xlsx";
string filePath = Path.Combine(Path.GetTempPath(), filename.Replace(".xlsx", DateTime.Now.ToFileTime() + ".xlsx"));
FileInfo Files = new FileInfo(filePath);
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
ExcelPackage excel = new ExcelPackage(Files);
var sheetscreate = excel.Workbook.Worksheets.Add("Zamowienia");
for (int i = 0; i < dt.Columns.Count; i++)
{
sheetscreate.Cells[1, i + 1].Value = dt.Columns[i].ColumnName.ToString();
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
sheetscreate.Cells[i + 2, j + 1].Value = dt.Rows[i][j].ToString();
}
}
excel.Save();
FileStream stream = new FileStream(filePath, FileMode.Open);
var result = new FileStreamResult(stream, "application/vnd.ms-excel");
result.FileDownloadName = Path.GetFileName(filePath);
return result;
}
return null;
}
}
catch
{
return null;
}
}
@using (Html.BeginForm("ZW2", "GM", FormMethod.Post, new { @class = "form-horizontal", role = "form", target = "_blank" }))
{
@Html.AntiForgeryToken()
<h4>Podaj numer ZW.</h4>
<h5 class="redfont">Numery zamówień podawaj kolejno od góry.</h5>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.paremetr1, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.EditorFor(m => m.paremetr1, new { htmlAttributes = new { @Value = "*", @class = "form-control datepicker" } })
@Html.ValidationMessageFor(m => m.paremetr1, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.paremetr2, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.EditorFor(m => m.paremetr2, new { htmlAttributes = new { @Value = "*", @class = "form-control datepicker" } })
@Html.ValidationMessageFor(m => m.paremetr2, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.paremetr3, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.EditorFor(m => m.paremetr3, new { htmlAttributes = new { @Value = "*", @class = "form-control datepicker" } })
@Html.ValidationMessageFor(m => m.paremetr3, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.paremetr4, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.EditorFor(m => m.paremetr4, new { htmlAttributes = new { @Value = "*", @class = "form-control datepicker" } })
@Html.ValidationMessageFor(m => m.paremetr4, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.paremetr5, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.EditorFor(m => m.paremetr5, new { htmlAttributes = new { @Value = "*", @class = "form-control datepicker" } })
@Html.ValidationMessageFor(m => m.paremetr5, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Uruchom" class="btn btn-default" />
<input type="button" class="btn btn-default" value="Powrót" onclick="location.href='@Url.Action("Index", "GM")'" />
</div>
</div>
}