我使用的是asp文件上传者对此我上传按钮上的图像点击。每当我正在上传超过4 MB的图像崩溃。如果我在配置定义大小的maxRequestLength 然后,如果我超过了文件大小它再次crashes.Is可以限制用户,并显示一个免责声明邮件,如果一个巨大的文件上传。我的意图是让用户知道该文件是巨大的。在使用asp文件上传4 MB Uplaod形象?
aspx页面
<tr>
<td align="center" class="title" colspan="2">
Image Upload
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:Label ID="lblImageDisclaimer" runat="server" Text="Please upload an image file less than 3MB in size"
Font-Bold="true" ForeColor="Highlight"></asp:Label>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:DropDownList ID="ddlImageType" runat="server" AutoPostBack="false" OnSelectedIndexChanged="ddlImageType_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td align="center" colspan="2" id="tdUpload" runat="server">
<asp:Label ID="lblImage1" runat="server" Text="Upload images : " Font-Bold="true"></asp:Label>
<asp:FileUpload ID="fileUploader" runat="server" /><asp:Button ID="btnUpload" CssClass="button"
runat="server" Text="Upload" OnClick="btnUpload_Click" OnClientClick="javascript:return validateFile();" />
<asp:Label ID="lblMessage" runat="server" Text="" CssClass="errorText"></asp:Label>
</td>
</tr>
<tr>
<td id="Td2" runat="server" align="center" colspan="1">
<asp:Label ID="Label1" runat="server" Text="SCREENSHOT 1" Font-Bold="true"></asp:Label>
</td>
<td id="Td3" runat="server" align="center" colspan="1">
<asp:Label ID="Label2" runat="server" Text="SCREENSHOT 2" Font-Bold="true"></asp:Label>
</td>
</tr>
<tr>
<td id="imgHolder" runat="server" align="center" colspan="1">
<div style="border: SOLID 1px BLACK; width: 575px; height: 250px; overflow: auto;">
<%--<asp:Image ID="imgPreview" runat="server" ImageUrl="~/FIRE/ImageHandler.ashx?id=1&imageNo=2" />--%>
<asp:Image ID="imgPreview" runat="server" />
</div>
</td>
<td id="imgHolder2" runat="server" align="center" colspan="1">
<div style="border: SOLID 1px BLACK; width: 575px; height: 250px; overflow: auto;">
<%--<asp:Image ID="imgPreview" runat="server" ImageUrl="~/FIRE/ImageHandler.ashx?id=1&imageNo=2" />--%>
<asp:Image ID="imgPreview2" runat="server" />
</div>
</td>
</tr>
<tr>
<td id="tdDelete1" align="left" style="width: 100%; padding-left: 15px;" colspan="1">
<asp:Button ID="btnDelete1" runat="server" Text="Delete" CssClass="button" OnClick="btnDelete_Click"
ToolTip="Click to Delete" OnClientClick="javascript:return confirm('Are you sure you want to delete this image?');" />
</td>
<td id="tdDelete2" align="left" style="width: 100%" colspan="1">
<asp:Button ID="btnDelete2" runat="server" Text="Delete" CssClass="button" OnClick="btnDelete_Click"
ToolTip="Click to Delete" OnClientClick="javascript:return confirm('Are you sure you want to delete this image?');" />
</td>
</tr>
的.cs页面事件。 protected void btnUpload_Click(object sender,EventArgs e) { try {0} {hfCurrentId.Value = 如果(fileUploader.HasFile) { 如果(fileUploader.PostedFile.ContentType.Contains( “图像”)& & fileUploader.PostedFile.ContentLength < = 3145728) {
if (ddlImageType.SelectedValue == "1")
{
Session["FileBytes"] = fileUploader.FileBytes;
hfImage1Byte.Value = Convert.ToBase64String(fileUploader.FileBytes);
imgPreview.ImageUrl = "~/Handlers/ImageHandler.ashx?workItemId=" + workItemId
+ "&imageTypeId=" + ddlImageType.SelectedValue;
}
else
{
Session["FileBytes2"] = fileUploader.FileBytes;
hfImage2Byte.Value = Convert.ToBase64String(fileUploader.FileBytes);
imgPreview2.ImageUrl = "~/Handlers/ImageHandler.ashx?workItemId=" + workItemId
+ "&imageTypeId=" + ddlImageType.SelectedValue;
}
}
else
{
lblMessage.Text = Constants.ImageFileError;
}
}
else
{
lblMessage.Text = Constants.FileError;
}
//lblHeader.Text = hfCurrentId.Value;
//upPanel1.Update();
}
catch (System.Exception ex)
{
//DisplayError(ex);
Session["ExceptionDetails"] = ex;
Response.Redirect(Constants.FIREErrorDetails);
}
}
我在这里限制了由3145728 大小和处理它在客户端大小
function validateFile() {
var strFileName = document.getElementById('<%=fileUploader.ClientID %>').value;
var strExtName = strFileName.substring(strFileName.lastIndexOf('.')).toLowerCase();
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
var e = objFSO.getFile(strFileName);
var fileSize = e.size;
//file size limit for 3mb
if (fileSize > 3145728) {
alert("Maximum size of uploaded file should be less than 3 MB.");
return false;
}
else
return true;
}
有没有其他的方式,以避免
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
我不能使用的ActiveXObject按照某些客户问题
我可以使用AjaxFileUploader吗? –
如果您专门针对HTML5浏览器,那么是的,您可以在使用“HTML5 File API”上传文件之前获取文件大小,但是如果您有任何用户使用基于HTML4的浏览器,则会从窗口中删除。如果您阅读ASP.NET AJAX AjaxFileUploader的文档,它会说它需要HTML5来获取进度反馈;否则会显示一个微调。所以它真的归结为HTML5或不; HTML5提供了许多可能性,但要注意并非所有IE版本都支持所有的HTML5功能;请查看[我可以使用](http://caniuse.com/)网站。 –