文件上传时究竟发生了什么?

时间:2013-05-31 10:03:51

标签: php javascript upload metadata dropbox

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

非常感谢你的时间!

3 个答案:

答案 0 :(得分:0)

上传文件时,您的网络服务器将接受这些文件并将其存储在临时文件夹中,直到文件上传完成为止。

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

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

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

答案 1 :(得分:0)

如前所述,在服务器上,文件放在一个临时文件夹中,您可以根据自己的意愿对其进行任何操作。

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

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

我自己从未这样做过,但这对我来说似乎是一个常见的问题,所以网上应该有足够的信息。这个看起来不错:http://blueimp.github.io/jQuery-File-Upload/(在Google上首次点击“jquery multi file upload”)

答案 2 :(得分:-1)

是的,这是一个非常常见的请求。通常,有一些HTML / JS客户端用户界面可以在适当的字段中收集所有文件名,可以是固定列表,也可以是一些动态生成的字段。即浏览器中的文件上传字段可以通过display:none来“隐藏”,以便拥有这些必要的字段,但显示出对用户更加喜欢的内容。

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

$inputName = $_GET['userfile'];
$fileName  = $_FILES[$inputName]['name'];
$tempLoc   = $_FILES[$inputName]['tmp_name'];