我有ZERO体验编码通过浏览器上传文件的经验,所以这部分对我来说都是新手。
我需要向用户(实际上他们只有一两个授权用户)提供一种将多个文本文件(想想50-200个文件)直接上传到MYSQL数据库的方法。
我不想给他们FTP访问权限,但可以让他们将文件输入数据库。
我可以弄清楚如何将PHP数据中的数据导入MYSQL数据库。
我无法弄清楚如何将多个文件的内容放入PHP数组中。
请帮忙解决问题。
答案 0 :(得分:3)
只需在页面中添加更多<input type="file">
,它们就会显示在$_FILES
数组中,您可以循环检索它们。
然而:
$_FILES
数组的结构在涉及多个文件时略显不合逻辑 - 请务必仔细read the manual,这有点反直觉。答案 1 :(得分:3)
这个例子可以帮助你理解基本的想法
<?php
$fileContents = Array();
if(count($_FILES) != 0){
foreach($_FILES as $file){
$fp = fopen($file["tmp_name"], "r");
array_push($fileContents, fread($fp, $file["size"]));
fclose($fp);
}
//$fileContents now holds all of the text of every file uploaded
}
?>
<html>
<head>
</head>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="file1" id="file" />
<input type="file" name="file2" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
首先检查是否有文件发布到自身。 如果有文件,它会遍历每个文件并在它们处于临时文件状态时打开它们。 之后,它使用随之发送的size属性一次读取所有内容(注意这一点)。 同时,它将内容推送到名为$ fileContents的数组中。 所以$ fileContents [0]保存第一个文本文件,依此类推。
答案 2 :(得分:1)
<!-- FORM -->
<form method="post" enctype="multipart/form-data">
<?php
for($i=1;$i<=10;$i++) //change 10 to any number for more upload fields
{
echo '<input type="file" name="files[]" /><br />';
}
?>
<input type="submit" name="submit" value="Submit" />
</form>
<?php
//Processor
if(isset($_POST['submit']))
{
foreach($_FILES['files']['tmp_name'] as $tmp_name)
{
if(!empty($tmp_name))
{
$filecontent[] = file_get_contents($tmp_name);
}
}
//Test
echo '<pre>';
print_r($filecontent);
echo '</pre>';
}
?>
答案 3 :(得分:1)
感谢所有为此做出贡献的人。我很难选择答案,因为我认为这是John和DaveRandom的50/50努力。
如果有人想在这里看到最终产品,那就是:
HTML:
<html>
<head>
</head>
<body>
<form method="post" action="test.php" enctype="multipart/form-data">
<input name="filesToUpload[]" id="filesToUpload" type="file" multiple="" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
PHP:
<?php
function rearrange( $arr ){
foreach( $arr as $key => $all ){
foreach( $all as $i => $val ){
$new[$i][$key] = $val;
}
}
return $new;
}
$fileContents = Array();
if(count($_FILES['filesToUpload'])) {
$realfiles=rearrange($_FILES['filesToUpload']);
foreach ($realfiles as $file) {
$fp = fopen($file["tmp_name"], "r");
array_push($fileContents, fread($fp, $file["size"]));
fclose($fp);
}
foreach ($fileContents as $thisone) {
echo "<textarea wrap='off'>\n";
echo $thisone;
echo "</textarea>\n";
echo "<br>----<br>";
}
}
?>