早上好,我一直试图解决这个问题,但是我必须承认我在编程方面有一些新的东西。
实际上我正在创建一个新闻网站,并且对于新闻管理我有一个小问题,我想要,当我点击保存图片时它得到一个随机名称,而不是它从用户文件中得到的名称,例如: 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);
}
}
});
}
答案 0 :(得分:0)
使用UUID(与GUID非常相似)。 Postgres UUID
你在哪个版本?如果在9.1上尝试只执行CREATE EXTENSION“uuid-ossp”;
您是在Windows上还是在某些* niX盒子上?有关如何安装的详细信息,请参阅此链接,具体取决于您所在的位置。 Install uuid-ossp module
答案 1 :(得分:0)
您可能希望根据数据库来驱动它 - 从ImageList中选择max(id)+1。这样您就可以保证唯一性,而不是具有随机值。您也可以使用UUID,但它们的文件名会更长。
答案 2 :(得分:0)
你可以在这里做一些事情 - 我建议使用PHP在服务器级别做这些事情。您显示的代码似乎是客户端JavaScript。
通常,您可以生成随机数或日期戳(可能更有用)。然后将其替换或附加到文件名。根据您网站的使用情况,这些都应该足够了。
PHP随机数生成器 - rand(0000, 9999)
PHP日期戳生成器(请注意,如果生成日期不包括:字符等会破坏某些图片网址) - date("YmdHis")
我经常使用这样的一些php来清理文件名
$file_name = str_replace(" ", "_", rand(0000, 9999)."_".eregi_replace("[[:space:]]+", " ", strtolower($_FILES['image']['name'])));
这不仅可以通过在文件名中附加4位数的随机数来使其独一无二,而且还可以设置所有的双空格,全部使用小写,并用下划线替换空格。它可能不是最干净但它有效。
答案 3 :(得分:0)
md5(microtime(true));
- 这将是非常独特的。
您可以附加user_id
或rand(0,1000)
以使其更加独特。
替代显然是使用tempnam
,它将在bash环境中创建唯一可以重用的临时文件。