c#mvc框架,实现左边输入框输入ID,右边按钮点击以后,下载该ID对应的文档,该文档对应到位置是充数据库的存储过程级获取的
时间: 2024-03-19 12:44:11 浏览: 13
要实现这个功能,需要完成以下几个步骤:
1. 在视图中添加一个左侧的输入框和一个右侧的下载按钮,并设置它们的 ID 属性,方便在后续的代码中获取它们的值。
```html
<div>
<input type="text" id="docId" />
<button type="button" id="downloadBtn">下载</button>
</div>
```
2. 在 JavaScript 中,获取输入框和下载按钮的引用,并为下载按钮添加一个点击事件的监听器。在点击事件处理程序中,使用 Ajax 技术向服务器发送一个请求,请求服务器下载指定 ID 对应的文档。在请求返回的回调函数中,提示用户下载文件。
```javascript
$(function () {
$("#downloadBtn").click(function () {
var docId = $("#docId").val(); // 获取输入框中的值
$.ajax({
url: "/Download/DownloadFile", // 请求的服务器端地址
type: "POST", // 请求方式
data: { "id": docId }, // 发送给服务器的数据
success: function (data) { // 请求成功的回调函数
if (data.success) {
alert("文件下载成功!");
}
else {
alert("文件下载失败:" + data.message);
}
},
error: function () { // 请求失败的回调函数
alert("请求失败,请稍后重试!");
}
});
});
});
```
3. 在服务器端,实现一个名为 "DownloadFile" 的控制器方法,用于响应下载请求。该方法接收一个文档的 ID 参数,并通过数据库存储过程获取该文档的文件路径,然后将该文件作为响应的内容返回给客户端。
```csharp
public ActionResult DownloadFile(string id)
{
// 调用数据库存储过程获取文件路径
string filePath = GetFilePathFromDatabase(id);
if (string.IsNullOrEmpty(filePath))
{
return Json(new { success = false, message = "文件不存在或已被删除!" });
}
else
{
// 将文件作为响应的内容返回给客户端
return File(filePath, "application/octet-stream", Path.GetFileName(filePath));
}
}
// 调用数据库存储过程获取文件路径的方法
private string GetFilePathFromDatabase(string id)
{
string connectionString = ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand("YourStoredProcedureName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@id", id);
connection.Open();
string filePath = (string)command.ExecuteScalar();
connection.Close();
return filePath;
}
}
}
```
在上述代码中,需要注意以下几点:
1. 在服务器端,我们使用 ASP.NET MVC 框架提供的 "File" 方法来返回文件内容。该方法接收三个参数:文件路径、文件类型、文件名。其中,文件类型可以是任何合法的 MIME 类型,如果不确定文件类型,可以使用 "application/octet-stream",表示二进制流类型。
2. 在调用数据库存储过程获取文件路径时,需要根据自己的实际情况修改连接字符串和存储过程名。
3. 如果文件不存在或已被删除,需要向客户端返回一个错误信息,可以使用 JSON 格式返回。在客户端的 Ajax 回调函数中,根据返回的 JSON 数据来提示用户下载是否成功。