多次上传是否遵循我们选择图像的相同上传顺序?

2024-01-26

我正在使用 HTML5 多重上传功能。

<input name='upload[]' type=file multiple="multiple" id="profileImages" />

它工作完美。现在我有一个疑问

多次上传图片时是否有顺序?

假设我有 5 张图片

a.png
b.png
c.png
d.png
e.png

现在在上传图像时如果我按以下顺序选择图像

a.png, 
b.png,
e.png,
d.png,
c.png

这些图像是否会按照我选择的顺序上传?

means $_FILES['upload']['name']数组将有(使用PHP )

[0] =>'a.png',
[1] =>'b.png',
[2] =>'e.png',
[3] =>'d.png',
[4] = >'c.png'

或者这取决于filesize or browser or 任何其他因素/属性 ?


sidenote

此外,我将这些图像单独存储在个人资料图像表

id(pk ) | profile_id | image_name

上述问题的答案将使我的工作变得容易,因为如果按照我们选择的顺序上传多个图像,那么选择一个图像作为主要个人资料图像会更容易(使用MIN(id) or MAX(id))给定的profile_id.


HTML5 有nothing与服务器相关的文件上传有关。时期。没有可靠的“命令”。正如评论所指出的,新的 HTML5 产生的实际顺序multiple字段可能因浏览器而异。要理解原因,我们需要看看当用户代理(浏览器)向 PHP 服务器提交包含多个文件字段的表单时会发生什么。

当您从 HTML 表单上传多个文件时,您的浏览器会自动为您执行几项操作:

  1. 发送一个Content-Type: multipart/form-data标头通知远程 HTTP 服务器它正在在此单个请求的上下文中发送多个离散的信息“块”。
  2. 构建符合 HTTP 规范的原始 HTTP 消息,以使用 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

这完全取决于浏览器放置表单中数据的顺序。用户代理嗅探并不是确定顺序的真正可行选项。相反,如果字段的顺序很重要(毫无意义的想法,但无论如何),您应该使用一种表单,其中可能的文件字段数量有限,并单独命名它们。这样您就可以通过文件中的字段名称来访问文件$_FILES大批。毕竟,您并不需要仅仅因为新的 HTML5 功能存在就使用它:

<form action='' method='post' enctype='multipart/form-data'>
  <input name='file1' type=file>
  <input name='file2' type=file>
  <input type='submit'>
</form>

在 PHP 文件中直接通过名称访问字段。您将知道哪个表单字段名称在前,因为您以这种方式编码了 HTML:

<?php
$_FILES['file1'];
$_FILES['file2'];

对于您的情况,也许更好的解决方案是简单地有一个直接命名的文件字段(因此您始终知道它是主字段),然后添加多选字段以便用户添加更多文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多次上传是否遵循我们选择图像的相同上传顺序? 的相关文章

随机推荐