当文件被上传时,它究竟发生了什么


What exactly happens to a file when it is uploaded?

我的问题确实想知道是否有可能首先上传所有文件,然后有时提取其元数据?我正在开发一个web api,这将允许我上传文件和提取他们的元数据。我一直使用的提取元数据的方法是每次上传一个文件,提取其元数据并将其打印出来。我希望在客户端 (javascript)上实现这一点,并且还能够允许用户从服务器下载上传的文件(一个类似dropbox的实现,也允许元数据操作)。这可能吗?

非常感谢您的宝贵时间!

如前所述,在服务器上,这些文件被放置在一个临时文件夹中,在那里您可以对它们进行任何操作。

如果我正确理解多部分http请求,它们应该在技术上能够发送多个文件,但仅考虑带宽问题,我不会采用这种方法。甚至不确定服务器端应用程序,例如PHP,是否可以处理这个

我希望我正确理解了你的用例。对于您的情况,我建议通过AJAX请求将文件发送到后台的PHP脚本,因此对于用户来说,在发生任何其他事情之前,似乎所有文件都是首先上传的。在后台,循环遍历选定的文件并将它们发送到服务器,每次发送一个文件。服务器可以读取元数据并将其发送回浏览器,在那里您可以用JS进一步处理它。

我自己从来没有这样做过,但这对我来说似乎是一个常见的问题,所以网上应该有很多信息。这个看起来不错:http://blueimp.github.io/jQuery-File-Upload/(第一次点击谷歌"jquery多文件上传")

上传文件时,您的web服务器将接受文件并将其存储在临时文件夹中,直到文件上传完成。

文件上传完成后,PHP脚本启动。

因此,任何PHP工作(如提取元数据,如果这是在PHP中完成的)都将在文件完成上传后发生。

p。我不认为你可以在客户端使用javascript访问本地文件。

是的,这是一个很常见的请求。通常,有一些HTML/JS客户端用户界面收集适当字段中的所有文件名,无论是固定列表还是一些动态生成的字段。也就是说,浏览器中的文件上传字段可能会被display:none"隐藏",以便有这些必要的字段,但向用户显示更花哨的内容。

如前所述:提交封闭表单后,所有内容都被发送到服务器并存储在临时目录(php.ini设置)中。php脚本将获取表单的post操作然后启动并能够从dir:

中获取文件
$inputName = $_GET['userfile'];
$fileName  = $_FILES[$inputName]['name'];
$tempLoc   = $_FILES[$inputName]['tmp_name'];