JSt*_*Kid 7 php upload filenames unique cordova
我目前正在使用phonegap编写移动应用程序.我希望这个应用程序拥有的少数功能之一是能够捕获图像并将其上传到远程服务器...
我目前有图像捕获和上传/电子邮件部分与编译的apk正常工作...但在我的PHP,我目前命名图像"图像[插入从10到20的随机数] ...这里的问题是,数字可以重复,图像可以被覆盖......我已经阅读并想过只使用rand()并选择从0到getrandmax()的随机数,但我觉得我可能有同样的机会文件覆盖...我需要每次都使用唯一的名称将图像上传到服务器,无论如何......所以php脚本会检查服务器已有的内容并使用唯一的写入/上传图像名称...
除了"rand()"以外的任何想法?
我也想到可能命名每个图像... img +日期+时间+随机5个字符,其中包括字母和数字......所以如果在2013年3月20日凌晨4:37使用应用程序拍摄图像,当上传到服务器时,图像会被命名为"img_03-20-13_4-37am_e4r29.jpg"......我认为这可能有用......(除非有更好的方法)但我对php很新我不明白怎么写这样的东西......
我的php如下...
print_r($_FILES);
$new_image_name = "image".rand(10, 20).".jpg";
move_uploaded_file($_FILES["file"]["tmp_name"], "/home/virtual/domain.com/public_html/upload/".$new_image_name);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏...在此先感谢!另外,如果有任何进一步的信息,请告诉我,我可能会遗漏...
aex*_*exl 17
您可能想要考虑PHP的uniqid()功能.这样您建议的代码如下所示:
$new_image_name = 'image_' . date('Y-m-d-H-i-s') . '_' . uniqid() . '.jpg';
// do some checks to make sure the file you have is an image and if you can trust it
move_uploaded_file($_FILES["file"]["tmp_name"], "/home/virtual/domain.com/public_html/upload/".$new_image_name);
Run Code Online (Sandbox Code Playgroud)
还要记住,服务器的随机函数并不是随机的.如果你需要一些随机的东西,请尝试random.org.随机随机随机.
UPD:为了在代码中使用random.org,您必须向其服务器执行一些API请求.有关该文档的文档,请访问:www.random.org/clients/http/.
电话会议的例子如下:random.org/integers/?num=1&min=1&max=1000000000&col=1&base=10&format=plain&rnd=new.请注意,您可以更改min,max而其他参数,如描述文档.
在PHP中,您可以GET使用file_get_contents()函数,cURL库甚至套接字向远程服务器发出请求.如果您使用的是共享主机,则应为您的帐户启用并启用外发连接.
$random_int = file_get_contents('http://www.random.org/integers/?num=1&min=1&max=1000000000&col=1&base=10&format=plain&rnd=new');
var_dump($random_int);
Run Code Online (Sandbox Code Playgroud)
您应该使用tempnam()生成唯一的文件名:
// $baseDirectory Defines where the uploaded file will go to
// $prefix The first part of your file name, e.g. "image"
$destinationFileName = tempnam($baseDirectory, $prefix);
Run Code Online (Sandbox Code Playgroud)
应在移动上传文件后完成新文件的扩展,即:
// Assuming $_FILES['file']['error'] == 0 (no errors)
if (move_uploaded_file($_FILES['file']['tmp_name'], $destinationFileName)) {
// use extension from uploaded file
$fileExtension = '.' . pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
// or fix the extension yourself
// $fileExtension = ".jpg";
rename($destinationFileName, $destinationFileName . $fileExtension);
} else {
// tempnam() created a new file, but moving the uploaded file failed
unlink($destinationFileName); // remove temporary file
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20034 次 |
| 最近记录: |