假设我的视频更长一点,例如50mb的大小,例如2分钟左右的持续时间,并且我想在将其上传到服务器之前将其重量最小化,以使一些元数据与服务器端代码混为一谈(我是为此使用nodejs。
我需要做这件事,因为浏览器决定它们将不使用纯JavaScript显示上载文件的实用程序信息。
我的意思是,只有当文件的名称末尾带有特定扩展名时,诸如 type 之类的某些信息才起作用,否则,将仅显示一个愚蠢的空字符串,并且出于安全原因,文件的路径名始终为空。
我想使用:
FileReader.readAsDataUrl(file);
将数据上传到服务器的方法已经被分析并在节点服务器端检查其扩展名。
但这有两个主要问题:
FileReader.readAsDataUrl()方法仅在文件的扩展名位于文件末尾时才能正常工作,否则base64编码的数据是base64编码的字符串,但其data:值为application/octet-stream
是一种非常不安全的格式,不允许在 php 中使用,是的,我在将整个数据传递到php之前正在与node进行分析(如果文件通过了允许的格式测试),因此nodejs仅在此过程中充当分析器的角色情况。
我不想在节点上上传要分析的整个文件,这效率低下又很慢,例如,如果要上传视频,请上传第一秒,如果可能的话视频的0.01秒,我不知道这是否可行。然后将其上传到特定的单独的nodejs文件夹,该文件夹将进行分析并检索包含文件myme类型的响应。
问题是我不知道如何确定文件中不需要损坏的数据的最小必要字节数。而且我不知道如何确定它,所以第一个问题是,可以确定它是否损坏了文件?
我首先尝试使用上传文件的切片方法:
File.slice(0, 50000);
但这是一个测试错误,要知道该文件需要前50000个字节不被损坏,并且如果我以后使用URL.createObjectURL(slicedFile)
并打开结果url可以复制,就我而言,如果我把第一个50000字节的信息仅再现了所期望的行为(正确剪辑的视频)的第一秒。