gpt4 book ai didi

php - 动态生成的文件上传控件<使用javascript>无法发布?

转载 作者:行者123 更新时间:2023-11-30 23:47:01 25 4
gpt4 key购买 nike

海 我有一个包含这样的文件类型的表单

  <tr><td> <input name="ufile[]" type="file" id="ufile[]" size="50" /></td></tr>

提交时我正在调用脚本

function addRowToTable()
{
var tbl = document.getElementById('uploadTab');
var lastrow = tbl.rows.length;
var iteration = lastrow;
var row = tbl.insertRow(lastrow);

var cell2 = row.insertCell(0);
var e2 = document.createElement('input');
e2.type = 'file';
e2.name = 'ufile[]';
e2.id = 'ufile[]';
e2.size='50';
cell2.appendChild(e2);
}

此脚本在单击按钮时生成 tr...在我看来,generatesource 工具我得到这样的“”

<tr><td><input size="50" id="ufile[]" name="ufile[]" type="file"></td></tr>

当我提交表单时,我在 View 页面中没有获得生成的文件类型的文件名但我得到的文件名是默认的可能是什么问题?

我将我的表单发布到此页面,

<?php
//set where you want to store files
//in this example we keep file in folder upload
//$HTTP_POST_FILES['ufile']['name']; = upload file name
//for example upload file name cartoon.gif . $path will be upload/cartoon.gif
$path1= "upload/".$HTTP_POST_FILES['ufile']['name'][0];
$path2= "upload/".$HTTP_POST_FILES['ufile']['name'][1];
$path3= "upload/".$HTTP_POST_FILES['ufile']['name'][2];
$path4= "upload/".$HTTP_POST_FILES['ufile']['name'][3];

//copy file to where you want to store file
copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);
copy($HTTP_POST_FILES['ufile']['tmp_name'][1], $path2);
echo copy($HTTP_POST_FILES['ufile']['tmp_name'][2], $path3);

//$HTTP_POST_FILES['ufile']['name'] = file name
//$HTTP_POST_FILES['ufile']['size'] = file size
//$HTTP_POST_FILES['ufile']['type'] = type of file
echo "File Name :".$HTTP_POST_FILES['ufile']['name'][0]."<BR/>";
echo "File Size :".$HTTP_POST_FILES['ufile']['size'][0]."<BR/>";
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][0]."<BR/>";
echo "<img src=\"$path1\" width=\"150\" height=\"150\">";
echo "<P>";

echo "File Name :".$HTTP_POST_FILES['ufile']['name'][1]."<BR/>";
echo "File Size :".$HTTP_POST_FILES['ufile']['size'][1]."<BR/>";
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][1]."<BR/>";
echo "<img src=\"$path2\" width=\"150\" height=\"150\">";
echo "<P>";

echo "File Name :".$HTTP_POST_FILES['ufile']['name'][2]."<BR/>";
echo "File Size :".$HTTP_POST_FILES['ufile']['size'][2]."<BR/>";
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][2]."<BR/>";
echo "<img src=\"$path3\" width=\"150\" height=\"150\">";

///////////////////////////////////////////////////////

// Use this code to display the error or success.

$filesize1=$HTTP_POST_FILES['ufile']['size'][0];
$filesize2=$HTTP_POST_FILES['ufile']['size'][1];
$filesize3=$HTTP_POST_FILES['ufile']['size'][2];

if($filesize1 && $filesize2 && $filesize3 != 0)
{
echo "We have recieved your files";
}

else {
echo "ERROR.....";
}

//////////////////////////////////////////////

// What files that have a problem? (if found)

if($filesize1==0) {
echo "There're something error in your first file";
echo "<BR />";
}

if($filesize2==0) {
echo "There're something error in your second file";
echo "<BR />";
}

if($filesize3==0) {
echo "There're something error in your third file";
echo "<BR />";
}

?>

编辑这是我的数组

Array ( [ufile] => Array ( [name] => Array ( [0] => stripe.jpg [1] => stripe.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg ) [tmp_name] => Array ( [0] => D:\xampp\tmp\php29A9.tmp [1] => D:\xampp\tmp\php29AA.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 8717 [1] => 8717 ) ) ) 

最佳答案

不想说显而易见的事情,但您是否记得添加 enctype属性?

<form method="post" enctype="multipart/form-data" action="...php">

没有这个,你将永远无法上传文件;您只会看到文件名作为提交的值。

<input name="ufile[]" type="file" id="ufile[]" size="50" />

id 中包含方括号是无效的。选择 id仅包含字母数字加上 .-_ ,并以字母开头。如果需要添加id对于每个生成的元素,确保每次都不同。尽管据我所知您实际上并没有使用任何这些 ID,因此您可以很容易地忽略它们。

$path1= "upload/".$HTTP_POST_FILES['ufile']['name'][0];

极度危险。用户可以在文件名中输入任何内容,包括 .. (转到目录)和事件文件类型,例如 .php 。永远不要相信服务器文件系统上用户提交的文件名!要么对它们进行强力清理(这比你想象的要难),或者更好的是,使用完全不相关的名称来存储它。

允许用户上传文件会带来很大的风险。请参阅this question供进一步讨论。

echo "File Name :".$HTTP_POST_FILES['ufile']['name'][0]."<BR/>";

每次将文本字符串放入 HTML 中时,都需要调用 htmlspecialchars()在上面。否则<&字符串中的字符可以包含标记(包括脚本),并且您会遇到跨站点脚本安全漏洞。

关于php - 动态生成的文件上传控件<使用javascript>无法发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2727385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com