1

Uploadify 是一个用于上传多个文件的 jQuery/Flash 插件。它工作得很好,除了我无法弄清楚当所有文件都完成后如何触发电子邮件。如果我尝试向<% SendEmail(); %>onAllComplete 参数添加类似的内容,它只会在页面加载时发送电子邮件。

有没有办法在这里推荐的处理程序中或从这篇文章中做到这一点?或者有什么方法可以触发 onAllComplete 参数中的帖子?

<script type="text/javascript">
    // <![CDATA[
    var FirstName = $('[id$=HiddenField4]').val();
    var MiddleName = $('[id$=HiddenField5]').val();
    var ClientName = $('[id$=HiddenField6]').val();
    var queueSize = $('#fileInput').uploadifySettings('queueSize');
    $(document).ready(function() {
        $('#fileInput').uploadify({
            'uploader': 'scripts/uploadify/uploadify.swf',
            'script': 'Upload.ashx',
            'scriptData': { 'first': FirstName, 'middle': MiddleName, 'client': ClientName, 'queueSize': queueSize },
            'cancelImg': 'scripts/uploadify/cancel.png',
            'auto': true,
            'multi': true,
            'fileDesc': 'Image Files',
            'fileExt': '*.jpg;*.png;*.gif;*.bmp;*.jpeg;*.pdf',
            'queueSizeLimit': 90,
            'sizeLimit': 10000000,
            'buttonText': 'Upload Documents',
            'folder': '/uploads',
            'onComplete': function(event, queueID, fileObj, response, data) {
                 alert(response);
            },
            'onAllComplete': function(event, queueID, fileObj, response, data) {
                 <% SendEmail(); %>
            },
            'buttonImg': 'images/upload.png'
         });
      });
      // ]]></script>

我也尝试过将 queueSize 声明为

var queueSize = $(".uploadifyQueueItem").size();

当我调试我的处理程序时,queueSize 总是发布为 0。

4

2 回答 2

1

您可以将发送电子邮件的指令放入接收上传文件的脚本中(Upload.ashx在您的情况下。)

上传完成后将调用该文件。

另一种方法是在onComplete回调中进行 Ajax 调用,调用另一个发送电子邮件的 ashx 脚本。无论如何,没有发送电子邮件的 JavaScript 方式,您必须在服务器端执行此操作。

于 2010-05-19T16:16:32.917 回答
1

您需要在服务器端解决此问题。但是 Uploadify 是一个完全客户端脚本(JS+Flash)。您需要在服务器端编写/调用邮件代码,该代码由您在其中触发的 ajaxical 调用调用onAllComplete。您可以jQuery.ajax为此使用或配合。

例如

        'onAllComplete': function(event, queueID, fileObj, response, data) {
             $.post('somescript.aspx', paramsWhichSignalsServerToSendMail);
        },
于 2010-05-19T16:17:40.450 回答