diE*_*cho 8 php html5 file-upload
我正在使用HTML5多重上传功能.
<input name='upload[]' type=file multiple="multiple" id="profileImages" />
Run Code Online (Sandbox Code Playgroud)
它的工作完美.现在我有一个查询
上传图片时,多次上传是否遵循任何订单?
假设我有5张图片
a.png
b.png
c.png
d.png
e.png
Run Code Online (Sandbox Code Playgroud)
如果我按以下顺序选择图像,现在在上传图像时
a.png,
b.png,
e.png,
d.png,
c.png
Run Code Online (Sandbox Code Playgroud)
这些图像会以我选择的相同顺序上传吗?
意味着$_FILES['upload']['name']数组将具有(使用PHP)
[0] =>'a.png',
[1] =>'b.png',
[2] =>'e.png',
[3] =>'d.png',
[4] = >'c.png'
Run Code Online (Sandbox Code Playgroud)
或者它取决于文件大小或浏览器或任何其他因素/属性?
进一步我将这些图像分别存储在 profile_image_table中
id(pk ) | profile_id | image_name
Run Code Online (Sandbox Code Playgroud)
上述问题的答案将使我的工作变得简单,因为如果按照我们选择的顺序上传多个图像,那么选择一个图像作为给定的主要轮廓图像(使用MIN(id)或MAX(id))将更容易profile_id.
小智 4
HTML5与服务器方面的文件上传无关。时期。没有可靠的“命令”。正如评论所指出的,新 HTML5multiple字段产生的实际顺序可能因浏览器而异。要理解原因,我们需要看看当用户代理(浏览器)向 PHP 服务器提交包含多个文件字段的表单时会发生什么。
当您从 HTML 表单上传多个文件时,您的浏览器会自动为您执行几项操作:
Content-Type: multipart/form-data标头以通知远程 HTTP 服务器它正在在此单个请求的上下文中发送多个离散的信息“块”。原始 HTTP 消息将如下所示:
POST /somePath HTTP/1.1
User-Agent: my-browser-v0.1
Host: www.example.com
Content-Length: 42
Content-Type: multipart/form-data; boundary=--------------------
------------------------------
Content-Disposition: form-data; name="file[]" filename="file1.txt"
Content-Type: text/plain
these were the contents of file1.txt
------------------------------
Content-Disposition: form-data; name="file[]"; filename="file2.txt"
Content-Type: text/plain
these were the contents of file2.txt
Run Code Online (Sandbox Code Playgroud)
这完全取决于浏览器放置表单中数据的顺序。用户代理嗅探并不是确定顺序的真正可行选项。相反,如果字段的顺序很重要(毫无意义的想法,但无论如何),您应该使用一种表单,其中可能的文件字段数量有限,并单独命名它们。这样您就可以通过$_FILES数组中的字段名称来访问文件。毕竟,您并不需要仅仅因为新的 HTML5 功能存在就使用它:
<form action='' method='post' enctype='multipart/form-data'>
<input name='file1' type=file>
<input name='file2' type=file>
<input type='submit'>
</form>
Run Code Online (Sandbox Code Playgroud)
在 PHP 文件中直接通过名称访问字段。您将知道哪个表单字段名称在前,因为您以这种方式编码了 HTML:
<?php
$_FILES['file1'];
$_FILES['file2'];
Run Code Online (Sandbox Code Playgroud)
对于您的情况,也许更好的解决方案是简单地有一个直接命名的文件字段(因此您始终知道它是主字段),然后添加多选字段以便用户添加更多文件。