0

我正在学习函数urlencode。是否可以在文件名上使用它?所以 - 当您将文件上传到服务器然后稍后使用该文件名时,您可以在 url 中使用它吗?

$promotionpicture=$_FILES["promotionpicture"]["name"];
$promotionpicture=rawurlencode($promotionpicture);

然后后来...

$imagesource="http://mysite.com/".$userID."/".$promotionpicture;

我正在尝试这样做,但每次导航到图片时,我都会从服务器收到“错误请求”。我应该使用特定的 php 编码功能吗?还是这一切都错了?提前感谢您的帮助。

4

2 回答 2

0

图片实际上只是原始数据,就像任何其他文件一样。可以做一些像你正在做的事情,但不一定是可取的。

如果你想做这样的事情,我建议你做一些事情来去除特殊字符。

$newfilename=preg_replace('/[^a-zA-Z0-9.]/','',$filename);

(从正则表达式匹配除字母和数字之外的所有字符

也就是说,请记住其他人所说的话。您将如何处理文件名冲突?图像将存储在哪里以及如何存储?

一种更稳健地执行此操作的简单方法是将原始文件名和 MD5 哈希存储在数据库中。通过哈希而不是名称保存文件,并编写一个脚本,通过使用数据库将原始名称与 MD5 匹配来检索文件。如果存储文件类型,则可以发出正确的标题,当用户下载文件或使用它嵌入网页时,它将保留其原始名称,或分别按预期显示。

于 2012-10-26T18:10:14.827 回答
0

urlencode and similar functions are for making an HTTP friendly URL. You would want to keep the normal filename and then when printing the img src, use urlencode.

Note that this is not really the preferred way to do it as you can run into duplicate filenames and misc security issues. It's better to generate a filename for it using a uuid or timestamp or something, that way you can bypass those types of issues.

于 2012-10-26T18:03:33.460 回答