【问题标题】:Print file content in an textarea on the same page在同一页面的文本区域中打印文件内容
【发布时间】:2012-01-29 03:10:37
【问题描述】:

我需要一个带有文件上传的页面和一个文本区域,文件的内容打印在这个页面中。

目前我有一个jsp文件和一个servlet:

index.jsp 的一部分:

 <form action="FileReader" ENCTYPE="multipart/form-data" method="POST">
 <textarea name="textinputarea" rows="14" cols="130" readonly>
  Some text 
 </textarea>
 <br> <br><tr>


  <td valign="top" align="left" height="200" width="33%">
  <img class="start_img" src="file_Selections.jpg"> <br> 

  <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
  <input type="file" name="user_file" accept="text/xml">   
  <input type="submit" value="Validate" /> <br>
   </form>

部分servlet:

public void doPost(HttpServletRequest request, HttpServletResponse response)      
String name = request.getParameter("textinputarea");
(...)
}else {
String otherFieldName = item.getFieldName();
String otherFieldValue = item.getString();}}

(...)

out.println("<html>");
out.println("<head>");
out.println("<title>Processing get requests with data</title>");
out.println("</head>");

// body section of document
out.println("<body>");
while ((strLine = br.readLine()) != null) {

// Print the content on the console
out.println(strLine + "</br>");
 }
 out.println("</body>");

 // end of html document
 out.println("</html>");
  out.close();

  } catch (Exception e) {
 response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
 };
 }

这实际上是在一个新页面中打印文件的内容。我试图给文本区域和“String name = request.getParameter("textinputarea"); "..

感谢您的宝贵时间!

【问题讨论】:

    标签: html jsp servlets upload textarea


    【解决方案1】:

    else 块中的所有表单字段都可用,您在后处理中完全忽略了它。

    } else {
        String otherFieldName = item.getFieldName();
        String otherFieldValue = item.getString();
    }
    

    不要忽视它。这些值表示常规表单字段的名称=值对。

    请注意,您不能在 multipart/form-data 编码请求上使用 getParameter()。这正是您使用 Apache Commons FileUpload 提取文件的原因。您应该使用相同的 API 来提取 multipart/form-data 请求的其他部分。

    另见:

    【讨论】:

    • 好的,谢谢您的建议!试图找到一种将加载的文件显示到文本区域的方法,我注意到默认文本(这是给用户的一些说明)没有被删除。我尝试使用一些javascript,但找不到方法。最后,我发现通过将请求发送到另一个jsp,它实际上与我已经得到的那个jsp相同,只是textarea是空白的。所以现在当一个文件被上传时,指令被删除并且上传的文件出现了。我想知道是否有更有效的方法来做到这一点。
    • 这些我使用的命令:request.setAttribute("textArea", file); request.getRequestDispatcher("Fileopened.jsp").forward(request, response);
    • 只需动态/有条件地打印文本区域的正文。例如。 &lt;textarea&gt;${textareaContent}&lt;/textarea&gt; 并使用相同的 servlet 来预处理请求(在 doGet() 中)和后处理请求(在 doPost() 中)。在doGet() 中设置默认值,在doPost() 中设置文件内容。最后通过 servlet 的 URL 而不是 JSP 的 URL 打开页面。另见stackoverflow.com/tags/servlets/info
    • 我应该在哪个部分调用get和post?我的意思是在表单的“方法”字段中,目前我有“帖子”。我应该把“get”放在哪里才能被执行?
    • 呃,保持你的表单 POST。 doGet() 将在您以通常方式在浏览器中打开页面时调用(如果您使用的是 servlet 的 URL 而不是 JSP 的 URL)。再次阅读前面链接的 servlets wiki 页面,了解具体示例和详细说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2010-11-16
    • 2022-07-23
    • 2020-08-03
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多