【问题标题】:image height width validation and popup图像高度宽度验证和弹出
【发布时间】:2013-01-23 11:22:40
【问题描述】:

我有一个带有FileUpload 控件的.aspx 页面。我想实现将图片上传到网站。但在此之前,我需要使用以下条件检查图像的高度和宽度:

  • 如果图像高度 >768 或宽度 >1024,则显示弹出消息以继续...(是/否)

  • 如果图像高度

    所以,到目前为止,我已经完成了图像上传代码,但是如何实现呢?任何形式的帮助/建议将不胜感激。

           <asp:RegularExpressionValidator ID="revUploaderMainPopup" runat="server" ControlToValidate="UploaderMainPopup"
                            ErrorMessage="*" ValidationGroup="MainPopUploadvlg" ToolTip="Only .jpg, .bmp, .png are valid."
                            ForeColor="Red" Display="Dynamic"  ValidationExpression="(.*\.([Jj][Pp][Gg])|.*\.([Bb][Mm][Pp])|.*\.([pP][nN][gG])$)">
           </asp:RegularExpressionValidator> 
    

【问题讨论】:

  • 我认为不上传文件是不可能的。 Regular Expression validation 将不起作用。
  • @krshekhar,它的工作.. 它只用于输入文件验证,我想要高度宽度验证
  • 这就是我要告诉你的。你不能用这个来验证高度。
  • 我没有使用它来验证高度宽度。如果您有任何建议,可以建议我...

标签: c# jquery asp.net file-upload


【解决方案1】:

如果不使用自定义验证器,您将无法执行此操作。它肯定必须是服务器端。客户端代码将需要 Javascript 来显示“是或否”对话框(这可以通过 javascript: confirm('yes?'); 对话框来完成。

此外,如果您想让 UI 看起来像从未发生过上传并且您在客户端完全验证它(因为部分回发),则需要一些 ajax。

请参阅to get dimensions of the image, without reading the entire file,这样您就可以将 ajax 请求推迟几毫秒。

祝你好运!

【讨论】:

  • 如何显示弹出窗口?回发后,fileuploader 不包含值。
  • 回发后可以保存FileUpload.FileName的值,可以在Page_Load@Arshad上设置
  • FileUpload.FileName 不包含完整路径,它只给出文件名,因此在回发后无法找到文件...并且 FileUpload.FileName 是只读属性
  • @Arshad 为什么要完整路径?我想你想上传两次还是什么?您必须首先将文件上传到您的服务器,然后检查服务器端的尺寸,然后 RegisterStartupScript 显示一个确认()框,对您的页面显示“是”或“否”(这意味着重新提交),到那时,无论如何你都会在服务器端拥有文件名。
  • @Ankit,因为我需要使用以下代码创建流来调整它的大小:System.Drawing.Image.FromStream(fluploader.PostedFile.InputStream);
【解决方案2】:

尝试关注

        using (System.Drawing.Image image = System.Drawing.Bitmap.FromStream(fs))
        {
            int iWidth = (int)Math.Round((decimal)image.Width);
            int iHeight = (int)Math.Round((decimal)image.Height);
           if(iWidth > 1024 || iHeight > 768)
           {
                // here you can throw your message
           }
        }

问候,

【讨论】:

  • 如何显示弹出窗口?回发后,fileuploader 不包含值。
  • 当你真的想显示警报或弹出窗口时,能给我一些描述吗?我没有明白 fileuploader 不包含值到底是什么意思?你的一些代码示例真的很有帮助。
  • 点击上传按钮后,验证大小,如果无效则显示弹出窗口,然后上传
  • 我已经完成了上传和调整大小的代码,需要知道如何显示弹出窗口
  • 如果条件不满足,您可以简单地抛出并警告。将警报消息设置为“文件大小大于所需大小,请上传另一张图片”之类的内容。捕获警报对话框的 Yes 和 No 事件,如果用户单击 Yes 而不是简单地调用 fileUpload 例程来打开 fileUploader。
【解决方案3】:

我是通过以下方式完成的: 我采用了两个变量(图像和字符串)一个带有弹出窗口的 div,有拖曳按钮。 验证图像后,我将 display:block 从服务器设置为 div。
点击 ye 按钮,我正在保存它。

 <div id="dvPopup" class="popup" runat="server" style="display: none">
    <asp:Panel ID="pnlpopup" runat="server" Style="display: block; position: absolute; width:400px;
        margin: auto" CssClass="modalConfirmation">
        <div style="width: 400px; height: 30px;" class="MessageHeaderError">
            <div class="modalHeader">
                Confirmation
            </div>
        </div>
        <br />
        <div style="color: Black">
            <span runat="server" id="spnMessge" style="font-weight:bold">Picture is smaller than 1024 x 768 and will be stretched.</span>
        </div>
        <div class="small">
        </div>
        <div>
            <div style="display: table-cell; height: 40px; padding-left: 80px; vertical-align: middle;
                width: 80px;">
                <asp:ImageButton ID="btnYes" ImageUrl="~/images/correct.png" runat="server" AlternateText="YES"
                    ToolTip="Yes" OnClick="btnYes_Click" />
            </div>
            <div style="display: table-cell; height: 40px; vertical-align: middle;">
                <asp:ImageButton ID="btnNo" ImageUrl="~/images/delete.png" runat="server" AlternateText="NO"
                    ToolTip="No" Style="margin-left: 100px;" OnClick="btnNo_Click" />
            </div>

.csfie:

 private bool ValidateImageSize(System.Drawing.Image imgPopup, string strSource)
    {
        //Messure height & width and show popup;
        if ((strSource == "MainPopup") && (imgPopup.Height > 768 || imgPopup.Width > 1024))
        {
            return true;
        }
        else if (strSource == "SmallPopup" && imgPopup.Height > 300 || imgPopup.Width > 400)
        {
            return true;
        }
        return false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多