使用Javascript添加新文件扩展名而不删除旧文件扩展名

时间:2011-08-17 12:27:49

标签: javascript file-upload client-side html-form file-extension


几乎没有类似的问题(herehere),但不完全是我想要的,我无法将这些代码组合在一起。

我有一个上传表单,如果用户上传ZIP或RAR文件,我想添加.jpg文件扩展名而不删除.zip或.rar扩展名。例如,“file.zip”到“file.zip.jpg”。

我需要这个,因为用户可以将图像和PDF文件上传到我的服务器,但如果有人有多个文件,最好将它们压缩。我还根据用户在上传表单中所做的选择为上传的文件编写了某些元数据。元数据用于Elvis,因此我可以根据元数据在我的服务器周围移动图片。问题是目前无法在Elvis的ZIP文件中写入某些元数据,因此我的解决方法是将文件扩展名更改为.jpg以欺骗Elvis并为文件写入元数据。是的,这是一个糟糕的解决方法,但目前它符合我的目的。

我没有准备好太多代码,因为我不知道我应该从哪里开始。另外,当你看到我的JS函数时,你不会从椅子上掉下来;)JS代码可以用jQuery编写。

<form action="http://url.here" method="post" enctype="multipart/form-data" id="form" onsubmit="addExtension();">
  <label for="file">File </label>
  <input type="file" name="Filedata" id="file">
  <input type="submit" value="Upload" />
</form>

1 个答案:

答案 0 :(得分:0)

您链接的问题基本上会询问字符串操作。但是,您希望以编程方式更改文件上载,这是一个完全不同的主题。从历史上看,大多数浏览器出于安全原因明确禁止它。一些现代浏览器实现了W3C File APIhere's an example for Firefox),它可以完全控制文件上传。我不知道它的支持有多广泛(可能,它在Internet Explorer上不起作用)但是除非你愿意切换到Flash,否则这是你在客户端做的唯一机会。

恕我直言,服务器端看起来更明智,但我不确定你拥有多少自由(看起来Elvis是某种黑盒子)。

修改:我刚发现:http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)#Related_specifications

相关问题