Добавить новое расширение файла с Javascript без удаления старого - PullRequest
1 голос
/ 17 августа 2011

Было несколько похожих вопросов ( здесь и здесь ), но не совсем то, что я хочу, и я не смог объединить коды.

У меня естьзагрузить форму, и если пользователь загружает файл ZIP или RAR, я хочу добавить расширение .jpg, не удаляя расширение .zip или .rar.Например, от «file.zip» до «file.zip.jpg».

Мне это нужно, потому что пользователи могут загружать изображения и файлы PDF на мой сервер, но если у кого-то есть несколько файлов, лучше их сжать.Я также записываю определенные метаданные для загруженных файлов на основе выбора, сделанного пользователем в форме загрузки.Метаданные предназначены для Elvis , поэтому я могу перемещать изображения вокруг своего сервера на основе метаданных.Проблема в том, что определенные метаданные в настоящее время не могут быть записаны в ZIP-файлы в Elvis, поэтому мой обходной путь - изменить расширение файла на .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 голосов
/ 17 августа 2011

Вопросы, которые вы ссылаетесь, в основном задают о работе со строками. Тем не менее, вы хотите изменить загрузку файла программно, это совершенно другая тема. Исторически, большинство браузеров явно запрещают это по соображениям безопасности. Некоторые современные браузеры реализуют W3C File API (, вот пример для Firefox ), который дает своего рода полный контроль над загрузкой файлов. Я не знаю, насколько распространена его поддержка (возможно, она не работает в Internet Explorer), но это ваш единственный шанс сделать это на стороне клиента, если вы не захотите переключиться на Flash.

ИМХО, выглядит разумнее делать это на стороне сервера, но я не уверен, сколько у вас свободы (похоже, что Элвис - это своего рода черный ящик).

Редактировать: Я только что нашел это: http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)#Related_specifications

...