【问题标题】:How can I implement this PHP code in Java Servlet如何在 Java Servlet 中实现这个 PHP 代码
【发布时间】:2014-12-10 20:04:57
【问题描述】:

我正在尝试通过拖放界面上传图片,我得到了 JavaScript 代码here,但服务器端代码是用 PHP 实现的,如下所示(我对其进行了修改以将图片插入数据库):

<?php

//Connect to database
mysql_connect("localhost", "root", "something-strange") or die(mysql_error());
mysql_select_db("business_clax") or die(mysql_error());

// The posted data, for reference
$file = $_POST['value'];
$name = $_POST['name'];

if(!isset($file))
{
    echo "Please select an image.";
}

//This is the line of code I really want in Java
$image = addslashes(file_get_contents($file)); //SQL Injection defence!
$image_name = addslashes($name);
$sql = "UPDATE `adverts` SET `photos` = '{$image}' WHERE `id` = '1'";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :(";
}

?>

上面的代码运行良好,但我需要在 Java 中实现它。 我试图在 Java Servlet 中实现上面的代码,但我不知道如何在 Java 中执行 file_get_contents($file) 和 addslashes(file_get_contents($file)); 函数,我认为必须有一个等效的方法。请我需要帮助。谢谢。

【问题讨论】:

标签: java javascript php servlets


【解决方案1】:

要获得文件的byte[] 表示,我会查看Apache FileUtils 库,特别是org.apache.commons.io.FileUtils.readFileToByteArray(java.io.File file) 方法。

要获取文件的String 表示,请使用org.apache.commons.io.FileUtils.readFileToString(java.io.File file)(您还需要了解java 文件。)

另外,java.sql.PreparedStatement 对象可以防止 SQL 注入攻击。

【讨论】:

  • 问题是我怎样才能像file_get_contents($file)函数那样获取文件?
  • 如何在 Java servlet 中做到这一点?我也可以说request.getParameter("value") PHP 正在做$file = $_POST['value']; 的方式吗?
  • 我对PHP不熟悉,但对Java非常熟悉。你介意告诉我那个函数是做什么的吗?然后我可以告诉你使用什么 Java 代码。 (我假设您使用的函数返回了文件的字节数。)
  • 好的。使用相同的库 (FileUtils),但使用 readFileToString 方法。
  • 我会尽快回复您,让我查看在线文档。
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 2015-09-06
相关资源
最近更新 更多