gpt4 book ai didi

java - 如何动态设置 setContentType ("text/html") 或 setContentType ("text/plain")

转载 作者:行者123 更新时间:2023-12-02 00:49:01 27 4
gpt4 key购买 nike

我需要修改读取文本文件的代码,以动态方式读取文本或html文件。

现在代码仅使用

response.setContentType("text/plain");

因为文件是以文本格式保存的。但我想保存为html格式来管理所有标签并有更好的 View ,但是如果我修改

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");
}

但它始终为空。感谢您的支持。

最佳答案

如果我可以提出您的“托管平台”,正确的答案是此类设置通常在托管平台中更改。我使用 GCS(Google 云服务器)托管了三个不同的 Web 域,因为它(大部分)是免费的。

在 Google Cloud 中,当您保存文件时,它通常会根据文件扩展名(“.txt”或“.html”)识别您保存的文件类型(内容类型)。可以使用鼠标在 Google 的存储桶文件资源管理器 GUI 中更改内容类型设置。也可以使用 GSUTIL 命令行程序在命令行手动更改它。

您可以使用 Java 的 shell 执行库(用于调用 UNIX Shell 命令的 Java 标准库例程)从 Java 调用 GSUTIL。这就是我所做的...

...但是您甚至可以下载 Google 的 Java Jar 文件来访问 GCS 并对 GCS 进行基于 Java 的调用,以执行诸如更改存储桶文件的内容类型之类的操作...

如果您使用的是 MSFT Azure、GoDaddy 或其他东西,这会有所不同。

关于java - 如何动态设置 setContentType ("text/html") 或 setContentType ("text/plain"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com