aspx.net 上传文件到服务器端
aspx.net uploading files to a server side
我有 2 页。一页发送一个 ID 号,我稍后将使用它从数据库上传数据。
我通过url-location += "fileUploadPage.aspx?"+ ID"
发送这个身份证号码。
然后我需要在该页面的服务器端上传文件。我需要表单不重新加载页面,因为它正在删除我的 URL 扩展名。
我考虑过使用 sessionStorage - 但我觉得它对我来说更好,因为用户可以为不同的项目打开多个选项卡以将文件上传到。
将文件上传到服务器端后 - 我还需要将其转换为 PDF。
几天来我一直在尝试这样做,但我无法修复它。
我设法将文件从表单上传到服务器端文件夹,但我无法拒绝重新加载页面。
当我拒绝重新加载页面时,服务器端功能没有执行。另外,我转成PDF失败了。
我在服务器端使用 aspx.net c#。
遗憾的是我不能分享原始代码,因为它在一个封闭的地方,但我在我的本地电脑上做了一个演示:
有什么建议吗?我是处理文件领域的新手——以前从未做过。任何关于重构我的代码或我如何移动 ID 的建议都非常受欢迎。
输入的数字也是我需要添加到我的文件名中的文本
将其转换为 PDF 后。
<form id="myForm" name="myForm" action="FilesProblemPage.aspx" runat="server" style="margin-top: 20px;">
<select id="Number" runat="server">
<option value="3">333333333</option>
<option value="2">222222222</option>
</select>
<label runat="server">
click me to choose a file
<input id="uploadFile" name="uploadFile" style="visibility: hidden" type="file" runat="server" />
</label>
<p id="ChosenFile">no file selected</p>
<asp:Button ID="uploadButton" runat="server" Text="Upload" type="button"
OnClick="uploadButton_Click" BorderStyle="None" CssClass="button" />
</form>
let makat = location.href.split("?")[1];
if (makat == 44459999) {
$("#makat").val("workssss");
$(".checkingTemp")[0].checked = true;
$(".checkingTemp")[1].checked = true;
}
$("#body_uploadFile")[0].addEventListener("change", function (e) {
console.log($("#body_uploadFile")[0].files);
if ($("#body_uploadFile")[0].files[0] != undefined)
$("#ChosenFile").text($("#body_uploadFile")[0].files[0].name);
else
$("#ChosenFile").text("no file chosen");
})
服务器端:
添加:
using System.IO;
protected void uploadButton_Click(object sender, EventArgs e)
{
if (uploadFile.PostedFile != null && uploadFile.PostedFile.ContentLength > 0)
{
string fileName = Path.GetFileName(uploadFile.PostedFile.FileName);
string folder = Server.MapPath("~/TempFiles/");
Directory.CreateDirectory(folder);
uploadFile.PostedFile.SaveAs(Path.Combine(folder, fileName));
try
{
Response.Write("<script>alert('operation success')</script>");
}
catch
{
Response.Write("<script>alert('operation failed')</script>");
}
}
}
好吧,您仍然可以使用 session() 来传递 ID,但是在第一个页面加载时(在下一页上,您将该 ID 保存到 ViewState 中。这样,即使它们有多个页面也没有关系打开因为当他们跳到下一页时,然后在第一页加载 IsPostBack = false,然后你转移到 ViewState。
ViewState 是每个网页的,因为 session() 是全局的。因此,通过会话传递 id,下一页的第一件事是将值传输到 ViewState。
然而,仅使用一个简单的 FileUpLoad 控件的问题是它们并不是那么好,如果文件较大,那么在 up-load 期间您不会取得任何进展。
出于这个原因,我倾向于在文件上传上付出一些真正的努力。 (因为这对开发人员来说是一种痛苦,而且通常对用户来说也是如此)。这方面有很多选择,但我在我的项目中使用了 AjaxToolKit,因此采用了那个。
因此,用户可以拖放文件或 select 个文件,然后点击 up-load 按钮。
AjaxToolKit up-loader 看起来像这样:
因此,用户可以 select 一堆文件 - 删除它们,做任何事情。
然后他们可以点击 up-load 按钮。
每个文件上传 - 带有进度条。然后在 up-loading 之后,我显示上传的文件。
例如:
而 up-loader 的另一个优点是没有真正的文件大小限制 - 它以小块的形式上传。
所以,这真的取决于你想要多花哨,但有很多“up-loader”的例子,甚至还有一些 jquery + JavaScript挺好的
如建议的那样,如果您不使用 AjaxControl 工具包,那么您可以考虑它(它有点过头了 - 但该工具包确实有很多其他不错的功能)。
如前所述,您可能希望至少使用一个 asp.net FileUpload 控件,但这取决于您在这里寻找的文件数量、大小以及 UI 的类型?
我有 2 页。一页发送一个 ID 号,我稍后将使用它从数据库上传数据。
我通过url-location += "fileUploadPage.aspx?"+ ID"
发送这个身份证号码。
然后我需要在该页面的服务器端上传文件。我需要表单不重新加载页面,因为它正在删除我的 URL 扩展名。
我考虑过使用 sessionStorage - 但我觉得它对我来说更好,因为用户可以为不同的项目打开多个选项卡以将文件上传到。
将文件上传到服务器端后 - 我还需要将其转换为 PDF。 几天来我一直在尝试这样做,但我无法修复它。
我设法将文件从表单上传到服务器端文件夹,但我无法拒绝重新加载页面。 当我拒绝重新加载页面时,服务器端功能没有执行。另外,我转成PDF失败了。
我在服务器端使用 aspx.net c#。 遗憾的是我不能分享原始代码,因为它在一个封闭的地方,但我在我的本地电脑上做了一个演示:
有什么建议吗?我是处理文件领域的新手——以前从未做过。任何关于重构我的代码或我如何移动 ID 的建议都非常受欢迎。
输入的数字也是我需要添加到我的文件名中的文本 将其转换为 PDF 后。
<form id="myForm" name="myForm" action="FilesProblemPage.aspx" runat="server" style="margin-top: 20px;">
<select id="Number" runat="server">
<option value="3">333333333</option>
<option value="2">222222222</option>
</select>
<label runat="server">
click me to choose a file
<input id="uploadFile" name="uploadFile" style="visibility: hidden" type="file" runat="server" />
</label>
<p id="ChosenFile">no file selected</p>
<asp:Button ID="uploadButton" runat="server" Text="Upload" type="button"
OnClick="uploadButton_Click" BorderStyle="None" CssClass="button" />
</form>
let makat = location.href.split("?")[1];
if (makat == 44459999) {
$("#makat").val("workssss");
$(".checkingTemp")[0].checked = true;
$(".checkingTemp")[1].checked = true;
}
$("#body_uploadFile")[0].addEventListener("change", function (e) {
console.log($("#body_uploadFile")[0].files);
if ($("#body_uploadFile")[0].files[0] != undefined)
$("#ChosenFile").text($("#body_uploadFile")[0].files[0].name);
else
$("#ChosenFile").text("no file chosen");
})
服务器端: 添加:
using System.IO;
protected void uploadButton_Click(object sender, EventArgs e)
{
if (uploadFile.PostedFile != null && uploadFile.PostedFile.ContentLength > 0)
{
string fileName = Path.GetFileName(uploadFile.PostedFile.FileName);
string folder = Server.MapPath("~/TempFiles/");
Directory.CreateDirectory(folder);
uploadFile.PostedFile.SaveAs(Path.Combine(folder, fileName));
try
{
Response.Write("<script>alert('operation success')</script>");
}
catch
{
Response.Write("<script>alert('operation failed')</script>");
}
}
}
好吧,您仍然可以使用 session() 来传递 ID,但是在第一个页面加载时(在下一页上,您将该 ID 保存到 ViewState 中。这样,即使它们有多个页面也没有关系打开因为当他们跳到下一页时,然后在第一页加载 IsPostBack = false,然后你转移到 ViewState。
ViewState 是每个网页的,因为 session() 是全局的。因此,通过会话传递 id,下一页的第一件事是将值传输到 ViewState。
然而,仅使用一个简单的 FileUpLoad 控件的问题是它们并不是那么好,如果文件较大,那么在 up-load 期间您不会取得任何进展。
出于这个原因,我倾向于在文件上传上付出一些真正的努力。 (因为这对开发人员来说是一种痛苦,而且通常对用户来说也是如此)。这方面有很多选择,但我在我的项目中使用了 AjaxToolKit,因此采用了那个。
因此,用户可以拖放文件或 select 个文件,然后点击 up-load 按钮。
AjaxToolKit up-loader 看起来像这样:
因此,用户可以 select 一堆文件 - 删除它们,做任何事情。
然后他们可以点击 up-load 按钮。
每个文件上传 - 带有进度条。然后在 up-loading 之后,我显示上传的文件。
例如:
而 up-loader 的另一个优点是没有真正的文件大小限制 - 它以小块的形式上传。
所以,这真的取决于你想要多花哨,但有很多“up-loader”的例子,甚至还有一些 jquery + JavaScript挺好的
如建议的那样,如果您不使用 AjaxControl 工具包,那么您可以考虑它(它有点过头了 - 但该工具包确实有很多其他不错的功能)。
如前所述,您可能希望至少使用一个 asp.net FileUpload 控件,但这取决于您在这里寻找的文件数量、大小以及 UI 的类型?