我需要修改读取文本文件的代码,以动态方式读取文本或html文件。
现在代码仅使用
response.setContentType(“ text / plain”);
因为该文件以文本格式保存。但是我想以html格式保存以管理所有标记并具有更好的视图,但是如果我在
中进行修改response.setContentType(“ text / html”);
所有另存为文本的文件查看器错误
我的代码是:
package uk.co.mycode.fax.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import uk.co.mycode.fax.dao.mycodeFaxDAO;
import uk.co.mycode.fax.domain.Image;
import uk.co.morpheus.logging.Logger;
public class FaxImageRequest
extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { performTask(request, response); }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { performTask(request, response); }
public void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String url = request.getParameter("U");
if (url == null || url.length() < 1) {
url = request.getParameter("URL");
}
Logger.log(4, getClass().getName(), "<**** Entered FaxImageRequest (" + url + ") ****>");
try {
Cookie[] cookies = request.getCookies();
String userId = "";
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("IMPS3IAuserid")) {
userId = cookies[i].getValue();
break;
}
}
}
if (userId.length() < 1) {
userId = "NOT LOGGED ON";
}
mycodeFaxDAO dao = mycodeFaxDAO.getInstance();
Image image = dao.getImage(url);
Logger.log(4, getClass().getName(), "Image: " + image);
if (image != null) {
ServletOutputStream out = response.getOutputStream();
if (image.type.toLowerCase().startsWith("f")) {
response.setContentType("image/tiff");
} else {
//----------------------------------------------------------------------------
response.setContentType("text/plain");
//----------------------------------------------------------------------------
}
for (int i = 0; i < image.bytes.length; ) { out.write(image.bytes, i, (image.bytes.length - i > 4096) ? 4096 : (image.bytes.length - i)); i += 4096; }
dao.updateImageArchive(userId, request.getParameter("U"));
} else {
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("<HTML>");
pw.println("<BODY>");
pw.println("<B>No image found</B>");
pw.println("</BODY>");
pw.println("</HTML>");
pw.close();
}
} catch (Throwable th) {
Logger.log(1, getClass().getName(), "Error during image read or update:" + th.getMessage());
th.printStackTrace();
}
Logger.log(4, getClass().getName(), "<**** Finished FaxImageRequest ****>");
}
}
我试图写这个:
if (response.getContentType() == null) {
response.setContentType("text/html");
} else {
response.setContentType("text/plain");
}
,但始终为null。 感谢您的支持。
答案 0 :(得分:0)
如果我可以提出您的“托管平台”,正确的答案是通常在托管平台中更改此类设置。我已经使用GCS(Google云服务器)托管了三个不同的网络域,因为它(大部分)是免费的。
在Google Cloud中,当您保存文件时,通常会根据文件的扩展名-.txt或.html来识别您保存的文件类型(内容类型)。可以使用鼠标在Google的存储桶文件浏览器GUI中更改Content-Type设置。也可以使用GSUTIL命令行程序在命令行上手动更改。
您可以使用Java的外壳执行库(用于调用UNIX Shell命令的Java标准库例程)从Java调用GSUTIL。这就是我的工作...
...但是您甚至可以下载Google的Java Jar文件来访问GCS,并对GCS进行基于Java的调用,以执行诸如更改存储桶文件的内容类型的操作。...
如果您使用的是MSFT Azure或GoDaddy或其他工具,则将有所不同。