2011-08-17 101 views
1


已经有几个类似的问题(herehere),但不完全是我想要的,我一直没能到代码结合。添加使用JavaScript新的文件扩展名不删除旧

我有一个上传表单,如果用户上传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> 

回答

0

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

编辑:我刚刚发现这一点:http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)#Related_specifications

+0

我不认为他是问荏苒实际上在上传之前的文件。假设有foo.zip,并且他认为将其更改为foo.zip.jpg表示服务器将允许上载。 – 2011-08-17 13:09:14