1

大家早上好,我这几天一直在尝试解决这个问题,但我必须承认我对编程有点陌生。

实际上我正在制作一个新闻网站,并且对于新闻管理我有一个小问题,我想要那个,当我点击保存图片时,它会得到一个随机名称,而不是它从用户文件中获得的名称,例如:pic.jpg另存为 2613.jpg。

我试图这样做是为了防止如果有 2 张同名的图片用新的图片替换旧的,我尝试使用 javascript、php 但我无法解决我的问题,希望你们可以帮助我方式,我使用 javascript、php、postgresql、jquery 和 ajax 工作,如果您需要更多详细信息,请告诉我,并且再次希望我能从这个社区获得一些帮助。

function guardar(){
if($('#titl').val() == '' || $('#categ').val() == '' || $('#cont').val()==''){
            alert("Todos los campos deben contener datos!");
            return false;
        }

        $.ajax({
            url: "noticias_php.php",
            data:{
                n : rand(),
                "accion" : "guardar",
                ID     : $('#id').val(),
                Titulo : $('#titl').val(),
                Categorias : $('#categ').val(),
                Contenido : $('#cont').val(),
                fecha: $('#fecha').val(),
                imagen: $('#img_id').val()

            },
            success: function(datos){
                var respuesta = explode("-*", datos);

                        if (respuesta[0] == "SI"){
                            aviso(respuesta[1]);
                            limpiar();
                        }else if (respuesta[0] == "NO"){
                            aviso(respuesta[1]);
                        }else{
                            aviso(datos);
                        }
            }
        });
    }
4

4 回答 4

0

使用 UUID(与 GUID 非常相似)。Postgres UUID

你在哪个版本?如果在 9.1 上尝试只执行 CREATE EXTENSION "uuid-ossp";

您是在 Windows 上还是在某些 *niX 机器上?有关如何安装的详细信息,请参阅此链接,具体取决于您所在的位置。安装 uuid-ossp 模块

于 2012-06-05T14:12:41.320 回答
0

您可能希望基于数据库来驱动它 - 从 ImageList 中选择 max(id)+1。这样您就可以保证唯一性,而不是具有随机值。您也可以使用 UUID,但它们将是更长的文件名。

于 2012-06-05T14:14:15.860 回答
0

您可以在这里做几件事——我建议在服务器级别使用 PHP 来做这些事情。您显示的代码似乎是客户端 JavaScript。

通常,您可以生成一个随机数或日期戳(这可能更有用)。然后将其替换或附加到文件名。根据您网站的使用情况,这两个都足够了。

PHP 随机数生成器 -rand(0000, 9999)

PHP 日期戳生成器(请注意,如果生成日期不包括:字符等,这些将破坏一些图像 url) -date("YmdHis")

我经常使用一些像这样的 php 来清理文件名

$file_name = str_replace(" ", "_", rand(0000, 9999)."_".eregi_replace("[[:space:]]+", " ", strtolower($_FILES['image']['name'])));

这不仅会通过将 4 位随机数附加到文件名来使其唯一,而且还会将所有双空格、全部小写以及用下划线替换空格。它可能不是最干净的,但它可以工作。

于 2012-06-05T15:22:46.123 回答
0

md5(microtime(true));- 这将是非常独特的。

您可以附加user_idrand(0,1000)使其更加独特。

显然,替代方法是使用tempnam它将在 bash 环境中创建唯一的临时文件,您可以重复使用该文件。

于 2012-06-05T16:12:28.197 回答