我有一个ajax formdata
<form id="form" action="index.php?id=upload" method="post" enctype="multipart/form-data">
<input id="files" multiple="true" name="files[]" type="file" />
</form>
我希望通过dataform继续发送此表单。
所以我创建了一个循环jn jquery来读取每个文件,所以每个文件我都有:
var data = new FormData();
data.append(file.name, file);
$.ajax({
url: 'index.php?id=upload',
type: 'POST',
contentType: false,
cache: false,
processData:false,
data: data,
fileName:'files',
当我打印var_dumb($_FILES)
时,在PHP代码中我得到了这个结果:
姓名:&#34;数组(1){[&#34; 8_modem_pool_with_small_and_big_jpg&#34;] =&gt; array(5){[&#34; name&#34;] =&gt; string(35)&#34; 8个调制解调器池 和big.jpg&#34; [&#34;类型&#34;] =&GT; string(10)&#34; image / jpeg&#34; [&#34; tmp_name的值&#34;] =&GT; string(24)&#34; F:\ xampp \ tmp \ php268B.tmp \&#34;
[&#34;错误&#34;] =&GT; int(0)[&#34; size&#34;] =&gt; INT(99790) }}
如何在服务器端获得$_FILES
值?
我试试
if(isset($_FILES["files"]))
{
和
if(isset($_FILES["file"]))
{
但它们都不起作用。
------- EDIT -------------
感谢您的回答。但他们不是我的答案。
当我使用时在php中
$_FILES["files"]
我发现了这个错误:
未定义的索引
但我可以通过以下代码打印值:
foreach($_FILES as $index => $file) {
move_uploaded_file($file['tmp_name'],$target.$file['name']);
}
我希望你和我不相信....
我想要这样的事情:
if(isset($_FILES["files"]))
{
//do action for single file
// do action for array file
}
最新代码适用于普通表单,但不适用于formdata。
答案 0 :(得分:1)
您可以尝试使用for
循环遍历此3级关联数组:
if(isset($_FILES['8_modem_pool_with_small_and_big_jpg'])){
for($i=0;$i < count($_FILES['8_modem_pool_with_small_and_big_jpg']['name']);$i++){
//Do whatever with the file:
echo $_FILES['8_modem_pool_with_small_and_big_jpg']['name'][$i];
echo $_FILES['8_modem_pool_with_small_and_big_jpg']['type'][$i];
echo $_FILES['8_modem_pool_with_small_and_big_jpg']['tmp_name'][$i];
}
}
答案 1 :(得分:0)
尝试以下方法:
move_uploaded_file( $_FILES['names']['8_modem_pool_with_small_and_big_jpg']['tmp_name'], $target);//target is the new file location and name
对于多个文件使用循环
foreach($_FILES['names'] as $index => $file) {
$target = '/img/'.$file['name']
move_uploaded_file( $file['tmp_name'], $target);
}
答案 2 :(得分:0)
这取决于您想要的值。所有这些都在数组中可见。
如果您想要名称,可以使用
$_FILES['names']['8_modem_pool_with_small_and_big_jpg']['tmp_name']
要将文件存储到特定位置,您可以使用
move_uploaded_file( $_FILES['names']['8_modem_pool_with_small_and_big_jpg']['tmp_name'], $myFile);