我有一个桌面应用程序,需要将图像和文件上传到 Web 服务器,以便远程使用数据。安装 xampp,我正在完美地使用 MySQL。对于上传文件,我有一个可以正常工作的 PHP 脚本。我可以毫无问题地存储图像。
我制作了这个脚本来删除图像:
<?php
$target_path = $_POST['imagenAEliminar'];
if (unlink($_POST['imagenAEliminar'])) {
echo "[web]Se elimino correctamente.";
}else{
if (is_null($_POST['imagenAEliminar'])) {
echo "[web] Es nulo.";
}
echo "[web]Algo sucedio y no se elimino";
}
?>
我邮寄。我知道代码有效,因为:
echo $_POST['imagenAEliminar']
它正确打印了我从 java 发送的路线。尽管如此,它还是给了我以下错误:
警告:取消链接('imagesCarrduci/image002.png'):
第 8 行的 C:\xampp\htdocs_e_l_i_m_i_n_a_r.php 中没有这样的文件或目录
图像存在且目录正确。如果我把
unlink('imagenesCarrduci/image002.png');
正确删除图像。
我对 PHP 不是很了解,所以我对此有点困惑。为什么会发生这种情况?我该如何解决?
更新
这是完美上传文件的代码:
<?php
error_reporting(0);
$target_path = "imagenes/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "[web]El archivo ". basename( $_FILES['uploadedfile']['name']). " ha sido subido";
} else{
if (is_null($_FILES['uploadedfile']['name'])) {
echo "[web] Es nulo.";
} else{
echo "[web]Ha ocurrido un error, trate de nuevo!";
}
}
?>
如果它以某种方式作为参考或有助于解决方案。
这是我由@Xerif 修改的代码:
<?php
// Defines una CONSTANTE con el directorio raiz + trozo de rura a la carpeta necesaria
define("RAIZ", $_SERVER['DOCUMENT_ROOT'].'/imagenes/');
chmod(RAIZ.$_POST['imagenAEliminar'], 0755);
echo RAIZ.$_POST['imagenAEliminar'];
// añades la RAIZ a unlink
if (unlink(RAIZ.$_POST['imagenAEliminar']))
{
echo "[web]Se elimino correctamente.";
}
else
{
if (is_null($_POST['imagenAEliminar']))
{
echo "[web] Es nulo.";
}
echo "[web]Algo sucedio y no se elimino";
}
这是它产生的错误:
警告:chmod():第5行C:\xampp\htdocs_e_l_i_m_i_n_a_r.php中没有这样的文件或目录C:/xampp/htdocs/images/image002.png警告:取消链接(C:/xampp/htdocs/images/image002. png):第9行的C:\xampp\htdocs_e_l_i_m_i_n_a_r.php中的参数无效[web]发生了一些事情,但没有被删除
我的建议是您使用绝对路径,它们带来的问题更少:
你可以做这样的事情
这样你就可以避免相对路径的麻烦。
另一方面,如果您想使用相对路径,建议您在开头使用./ (点、斜杠)来指示当前目录。
我发现了错误!错误不是我想的那样。错误来自已实现的 java 代码。在发送消息之前附加到字符串“\r\n”,转义字符。当它们到达时,php 不会打印它们,而是将它们存储在字符串中。
一位朋友查看了代码,并在 apache 日志中注意到了这一点。删除该行,一切正常。这通过复制和粘贴发生在我身上,但它仍然来自经验。
俗话说:
“懒惰的工作两次”