php - Javascript 和 PHP 上传系统

标签 php javascript mysql forms file-upload

在此先感谢您的帮助,我希望我对我的请求的解释是可以理解的。

我有一个网站,我在上面上传各种 HTML 页面,其中包含脚本、网站等,随着时间的推移,我发现这些内容很有用...目的是 1) 为我自己提供引用,以及 2) 分享我发现的内容与他人。

该网站由 2 个部分组成。用于查找脚本的搜索页面和用于上传脚本的管理页面。上传的 HTML 文件被放置在我服务器上的“docs/”目录中,详细信息被添加到搜索页面的 MySQL 数据库中。

表单如下所示:

<form name="upload" enctype="multipart/form-data" action="includes/add.php" 
method="post" onsubmit="return validateForm();"> 

<label for="scriptname">Script Name</label><input class="inputarea" type="text" 
name="scriptname"><br> 
<label for="category">Category</label><input class="inputarea" type="text" 
name="category"><br> 
<label for="keywords">Keywords</label><input class="inputarea" type="text" 
name="keywords"><br>
<label for="content">HTML File</label><input class="inputarea" type="file" 
name="content"><br> 
<input class="submit" type="submit" value="Add"> 
</form>

我的问题是...是否有任何方法可以使用 JavaScript 或 PHP 执行以下操作:

  1. 为上传的文件生成一个自动文件名(几个随机数字就可以)
  2. 在“脚本名称”输入字段中,在提交时添加文本,以便将脚本名称和文件名称变成一个超链接,并以文本形式添加到数据库中...例如。按下提交按钮时,将以下内容添加到数据库中:

    "scriptname_input"

粗体部分取自生成的文件名,斜体部分取自输入字段...

这样做的目的是为了在搜索结果中出现带有脚本名称的数据库列时,脚本名称是指向实际文件的链接。我已经准备好搜索功能,它能够从数据库条目创建链接,但我只需要简化上传过程。

如果这不可能,是否有其他方法可以实现?

---编辑---

谢谢大家的帮助!非常感谢,我结合了一些建议来解决这个问题。但是,我将功劳归功于 Ibere,因为他的解决方案最接近。

这是我用于处理上传和数据库添加的“add.php”文件的最终代码,以防它再次出现(我怀疑):P

<?php

$filename = md5($_FILES['content']['name']);
$labelForUrl = $_POST['scriptname'];
$url = "<a href=\"docs/$filename\">$labelForUrl</a>";
$target = "../docs/";

//This gets all the other information from the form
$name=$_POST['scriptname'];
$cat=$_POST['category'];
$key=$_POST['keywords'];
$link=$_POST['link'];
$file=($_FILES['content']['scriptname']);

// Connects to your Database
mysql_connect("localhost", "username", "password") or
die(mysql_error()) ;
mysql_select_db("scripts") or die(mysql_error()) ;

//Writes the information to the database
mysql_query("INSERT INTO scripttable (scriptname,category,keywords,link,content)
VALUES ('$url', '$cat', '$key', '$link', '$file')") ;

if(move_uploaded_file($_FILES['content']['tmp_name'], $target . $filename)) {
echo "The file ".  $labelForUrl. 
" has been uploaded";
}
else {
    echo "There was an error uploading the file, please try again!";
    }

?>

最佳答案

你可以为文件名做这样的事情。

$filename = md5($_FILES['content']['name']);

$labelForUrl = $_POST['scriptname'];

md5 不是随机的,但足以为文件名生成不可读的字符串。
然后你可以像这样创建一个 url

<a href="docs/<?php echo $filename; ?>" ><?php echo $labelForUrl; ?></a>

希望这对您有所帮助。

编辑:我忘记将扩展名添加到电影名中。所以正确的代码应该是这样的:

$filename = md5($_FILES['content']['name']).$_FILES['content']['type']

关于php - Javascript 和 PHP 上传系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12425985/

相关文章:

javascript - onResize() 在 WordPress 4.7.2 中不起作用

javascript - 如何在 Polymer 中使用 google-map-directions 元素?

mysql - 我怎样才能得到这个答案+ mysql中的查询

mysql - 在 phpmyadmin 中创建额外的身份验证

php - 如何使用 PHP 在 Web 服务器上保存 XML 文件?

php - 如何将可空变量转换为不可空类型?

php - 如何自动减去字段并在其他字段中插入值?

javascript - HTML5 : inaccurate positioning of rectangles

javascript - React Formik 不适用于数字输入

php - 在 MySQL 中设置名称 utf8?