当前位置: 首页 > 面试题库 >

Uploadify插件不会调用Java Servlet

公西光华
2023-03-14
问题内容

我刚刚开始使用Uploadify Flash插件而不是标准HTML UI。
并遇到了下一个问题:

当我单击“上传文件”链接时,将显示进度并显示“已完成”状态,但实际上-并未发生任何事情,因此未从后端调用Java Servlet。

有上传的servlet和上传下一个方式执行 早先

< form enctype="multipart/form-data" method="post" target="uploadFrame"
action="<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}">...

提供Uploadify插件后,UI 现在 如下所示:

插件部分(配置):

    <script>
...  
         oScript.text+= "$j('#uploadify').uploadify({";
      oScript.text+= "'uploader' : 'kne-portlets/js/lib/uploadify/scripts/uploadify.swf',";
      oScript.text+= "'script'   : '<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=<%= decodedString %>',";
      oScript.text+= "'cancelImg': 'kne-portlets/js/lib/uploadify/cancel.png',";
      oScript.text+= "'folder'   : '<%= decodedString %>',";
      oScript.text+= "'queueID'  : 'fileQueue',";
      oScript.text+= "'auto'     : false,";
      oScript.text+= "'multi'    : false,";
      //oScript.text+= "'sizeLimit' : 1000";
      oScript.text+= "});";
      oScript.text+= "});"; 
...   
</script>

这里的’scripts’参数指向后端的Java Servlet

<%= decodedString %>是文件夹路径,其值为 \\ file-srv \ demo

上传部分:

<input type="file" name="uploadify" id="uploadify" />
<a href="javascript:$j('#uploadify').uploadifyUpload();">Upload Files</a>

我的错在哪里

插件配置中的“脚本”参数指向后端的Java Servlet,此操作已完成,但未触发Servlet。

错误,如果“脚本”参数不正确:http :
//img190.imageshack.us/i/errormm.png/

感谢您的协助。


问题答案:

这可能有很多可能的原因(另请参阅我发表的评论)。

  • 未加载外部JS。
  • JS代码在语法/逻辑上无效。
  • 请求网址无效。
  • Servlet根本没有映射。
  • Servlet被映射为错误url-pattern
  • Servlet无法启动/初始化。

很难根据现有信息确定根本原因。

正如您提到的那样,您没有在FireBug的“网络”选项卡中看到任何请求被触发,我认为JS代码在语法/逻辑上完全无效。右键单击页面,然后双重验证生成/打印的JS代码。

更新: 我试图重现您的问题。

  1. 我下载了jquery.uploadify-v2.1.0(MIT),将其解压缩并将所有内容/WebContent/uploadify放入Eclipse中我的(空)操场Web项目的文件夹中。

  2. 我创建了一个/WebContent/upload.jsp文件,如下所示:

        <!DOCTYPE html>
    <html lang="en">
        <head>
            <title>Uploadify test</title>
            <script src="uploadify/jquery-1.3.2.min.js"></script>
            <script src="uploadify/swfobject.js"></script>
            <script src="uploadify/jquery.uploadify.v2.1.0.min.js"></script>
            <script type="text/javascript">
                $(document).ready(function() {
                    $('#uploadify').uploadify({
                        'uploader': 'uploadify/uploadify.swf',
                        'script': 'uploadServlet',
                        'folder': '/uploads',
                        'cancelImg': 'uploadify/cancel.png'
                    });
                    $('#upload').click(function() {
                        $('#uploadify').uploadifyUpload();
                        return false;
                    });
                });
            </script>
        </head>
        <body>
            <input id="uploadify" type="file">
            <a id="upload" href="#">Upload</a>
        </body>
    </html>
  1. 我创建了一个com.example.UploadServlet与帮助不大如下Apache的百科全书文件上传(刚放置commons-fileupload-1.2.1.jarcommons-io-1.4.jar/WEB-INF/lib):
        package com.example;

    import java.io.IOException;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;

    public class UploadServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
        {
            System.out.println("UploadServlet invoked. Here are all uploaded files: ");
            try {
                List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
                for (FileItem item : items) {
                    if (!item.isFormField()) {
                        System.out.println("Name: " + item.getName());
                        System.out.println("Size: " + item.getSize());
                        System.out.println("Type: " + item.getContentType());
                    }
                }
            } catch (Exception e) {
                throw new ServletException(e);
            }
        }
    }
  1. 我注册com.example.UploadServletweb.xml,如下所示:
        <servlet>
        <servlet-name>uploadServlet</servlet-name>
        <servlet-class>com.example.UploadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>uploadServlet</servlet-name>
        <url-pattern>/uploadServlet</url-pattern>        
    </servlet-mapping>
  1. 我部署了项目,启动了服务器,访问了http:// localhost:8080 / playground / upload.jsp,从我的下载文件夹中选择了一个随机的大文件,单击Upload链接,然后看到上传百分比计数器增长到100%,我终于在标准输出中看到以下内容:
    UploadServlet被调用。这是所有上传的文件:
    

    名称:glassfish-v3-windows.exe
    尺寸:50402555
    类型:应用程序/八位字节流

很抱歉,我无法重现您的问题。至少,以上信息应该可以帮助您“重新开始”。希望能帮助到你。

更新: 根据评论,过滤器期望它正在使用相同的会话。好的,您可以通过更改

    '<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=<%= decodedString %>',";

    '<%= request.getContextPath() %>/uploadFile;jsessionid=${pageContext.session.id}?portletId=${portletId}&remoteFolder=<%= decodedString %>',";


 类似资料:
  • 本文向大家介绍Jquery uploadify上传插件使用详解,包括了Jquery uploadify上传插件使用详解的使用技巧和注意事项,需要的朋友参考一下 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载。 首先按下面的步骤来实现一个简单

  • 本文向大家介绍jQuery文件上传插件Uploadify使用指南,包括了jQuery文件上传插件Uploadify使用指南的使用技巧和注意事项,需要的朋友参考一下 对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持 Flash,主要特性:支持多文件上传、HTML5版本可拖拽上传、实时上传进度条显示、强大的参数 定制功能,如文件大小、文件类型、按钮图片定义、上传文件脚本

  • 本文向大家介绍聊一聊jQuery插件uploadify使用方法,包括了聊一聊jQuery插件uploadify使用方法的使用技巧和注意事项,需要的朋友参考一下 说说自己使用uploadify的一波三折的曲折过程:  之所以要选择uploadify,是源于自己先前使用过jQuery官网的上传文件插件,比较难用(页面写的代码比较多,IE下后台回传需要配置格式【不清楚其他上传插件是否也是这样】),而且一

  • 本文向大家介绍AspNet中使用JQuery上传插件Uploadify详解,包括了AspNet中使用JQuery上传插件Uploadify详解的使用技巧和注意事项,需要的朋友参考一下 首先按下面的步骤来实现一个简单的上传功能。 1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中。 2 在项目中添加UploadHandler.ashx文件用来处理文件

  • 本文向大家介绍BootStrap中Datetimepicker和uploadify插件应用实例小结,包括了BootStrap中Datetimepicker和uploadify插件应用实例小结的使用技巧和注意事项,需要的朋友参考一下 bootstrap-datetimepicker是一款轻便的时间选择插件,支持Time选择,国际化,应用起来相当简单。而uploadify则是一款支持多文件上传的插件。

  • 我花了很多时间研究如何调用Maven shade插件来构建uber jar(具有所有依赖项)。我找到的大多数支持google的信息(包括许多示例和Maven文档)表明,我所要做的就是将插件包含到pom中。xml: 然后,“mvn包”(或最终调用“包”的任何其他目标)将自动触发此插件。 但不管我怎么做,真正调用插件的唯一方法似乎是:运行“mvn package shade:shade”(这似乎违背了

  • Uploadify简单说来,是基于Jquery的一款文件上传插件。它的功能特色总结如下: 支持单文件或多文件上传,可控制并发上传的文件数 在服务器端支持各种语言与之配合使用,诸如PHP,.NET,Java…… 通过参数可配置上传文件类型及大小限制 通过参数可配置是否选择文件后自动上传 易于扩展,可控制每一步骤的回调函数(onSelect, onCancel……) 通过接口参数和CSS控制外观 在线演示

  • 我是spring webflux和reactor的新手,我希望在发生某些特定异常时有一个回退机制,根据我的研究,onErrorResume方法可以做到这一点,但它不会被调用,我得到500个内部服务器错误,而不是触发回退并阻止此错误。 注意:我使用Spring网络流量,这意味着它在Reactor项目的正常行为中做了一些改变 这是堆栈跟踪