Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何返回到具有原始扩展名的客户端并重命名文件_Php_Security_Upload_Download - Fatal编程技术网

Php 如何返回到具有原始扩展名的客户端并重命名文件

Php 如何返回到具有原始扩展名的客户端并重命名文件,php,security,upload,download,Php,Security,Upload,Download,我创建了一个具有上载功能的网站,并以.xxx扩展名存储在服务器中,在每个文件上重命名,然后将原始扩展名和文件名记录到数据库中 客户端->上传->images.jpg 服务器->保存->md5.xxx 数据库->插入->images.jpg和md5.xxx 客户端->下载->图像.jpg (但不需要在服务器中重命名文件或再次重命名为md5) 如何使用php语言返回具有原始扩展名和名称文件的客户端 你能帮我解决问题吗?谢谢,对不起,我的英语 您需要一个文件来处理请求,比如downloadimage

我创建了一个具有上载功能的网站,并以.xxx扩展名存储在服务器中,在每个文件上重命名,然后将原始扩展名和文件名记录到数据库中

  • 客户端->上传->images.jpg
  • 服务器->保存->md5.xxx
  • 数据库->插入->images.jpg和md5.xxx
  • 客户端->下载->图像.jpg (但不需要在服务器中重命名文件或再次重命名为md5)

    如何使用php语言返回具有原始扩展名和名称文件的客户端

    你能帮我解决问题吗?谢谢,对不起,我的英语


您需要一个文件来处理请求,比如
downloadimage.php
并将文件名传递给它,例如
downloadimage.php?name=image.jpg
。 获取['name']并在数据库中查找文件名并提供它

然后使用重写使url变得漂亮

RewriteRule /somepath/(.*) /somepath/downloadimage.php?name=$1

因此,您可以从PHP文档中的aexample访问图像

<?php
  // pseudo code

  $md5_filename = get_md5_filename_from_database($_GET['name']);

  // sending 

  header('Content-type: image/jpeg');
  header('Content-Disposition: attachment; filename="'.$_GET['name'].'"');

  readfile($md5_filename);
?>
现在你可以下载

www.yourdomain.com/some path/downloadimage.php?name=image.jpg

<?php
  // pseudo code

  $md5_filename = get_md5_filename_from_database($_GET['name']);

  // sending 

  header('Content-type: image/jpeg');
  header('Content-Disposition: attachment; filename="'.$_GET['name'].'"');

  readfile($md5_filename);
?>
或者在Apache配置中使用
RewriteRule
(正如穆萨所说)获得

www.yourdomain.com/some path/image.jpg

<?php
  // pseudo code

  $md5_filename = get_md5_filename_from_database($_GET['name']);

  // sending 

  header('Content-type: image/jpeg');
  header('Content-Disposition: attachment; filename="'.$_GET['name'].'"');

  readfile($md5_filename);
?>