我的问题正是想知道是否可以先上传所有文件,然后有时再提取它们的元数据?我正在开发一个 web api,它允许我上传文件并提取它们的元数据。我一直用来提取元数据的方法是一次上传一个文件并提取其元数据并打印出来。我希望在客户端(javascript)上实现这一点,并且还能够允许用户从服务器下载上传的文件(类似于 Dropbox 的实现,它也允许元数据操作)。可能吗?
非常真诚地感谢您的宝贵时间!
我的问题正是想知道是否可以先上传所有文件,然后有时再提取它们的元数据?我正在开发一个 web api,它允许我上传文件并提取它们的元数据。我一直用来提取元数据的方法是一次上传一个文件并提取其元数据并打印出来。我希望在客户端(javascript)上实现这一点,并且还能够允许用户从服务器下载上传的文件(类似于 Dropbox 的实现,它也允许元数据操作)。可能吗?
非常真诚地感谢您的宝贵时间!
如前所述,在服务器上,文件被放置在一个临时文件夹中,您可以在其中对它们做任何您想做的事情。
如果我正确理解多部分 HTTP 请求,它们在技术上应该能够发送多个文件,但仅就带宽问题而言,我不会采用这种方法。甚至不确定服务器端应用程序(例如 PHP)是否可以处理这个问题。
我希望我正确理解了您的用例。对于您的情况,我建议通过 AJAX 请求将文件发送到后台的 PHP 脚本,因此对于用户来说,似乎所有文件都是在发生其他任何事情之前先上传的。在后台,您循环选择文件并将它们发送到服务器,一次一个文件。服务器可以读取元数据并将其发送回浏览器,您可以在浏览器中进一步使用 JS 对其进行处理。
我自己从来没有这样做过,但这对我来说似乎是一个常见的问题,所以网络上应该有很多信息。这个看起来不错:http ://blueimp.github.io/jQuery-File-Upload/ (第一次在谷歌上点击“jquery multi file upload”)
上传文件时,您的网络服务器将接受文件并将它们存储在临时文件夹中,直到文件上传完成。
文件上传完成后,然后启动 PHP 脚本。
因此,任何 PHP 工作(例如提取元数据,如果在 PHP 中完成)都将在文件完成上传之后发生。
PS。我认为您不能在客户端使用 javascript 访问本地文件。
是的,这是一个很常见的要求。通常,有一些 HTML/JS 客户端用户界面将所有文件名收集在适当的字段中,或者是固定列表,或者是一些动态生成的字段。即,浏览器中的文件上传字段可能会被 display:none “隐藏”,以便拥有这些必要的字段,但向用户显示一些更花哨的东西。
正如其他人所说:提交封闭表单后,所有内容都发送到服务器并存储在临时目录(php.ini 设置)中。将获取表单的 post 操作的 php 脚本被启动并能够从目录中获取文件:
$inputName = $_GET['userfile'];
$fileName = $_FILES[$inputName]['name'];
$tempLoc = $_FILES[$inputName]['tmp_name'];