为什么 opencart 表单使用 enctype=“multipart/form-data”


Why do opencart forms use enctype="multipart/form-data"?

例如,假设货币模块的视图文件currency.tpl。它没有文件类型的输入,但表单仍然使用 enctype="multipart/form-data" .

我试图删除enctype,所以默认的,enctype="application/x-www-form-urlencoded"也有效。

但是每个Opencart表单都使用enctype="multipart/form-data"。这是什么原因呢?

编辑

这是 opencart 版本 1.5.6.4 的 currency.tpl

<?php if (count($currencies) > 1) { ?>
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data">
  <div id="currency"><?php echo $text_currency; ?><br />
    <?php foreach ($currencies as $currency) { ?>
    <?php if ($currency['code'] == $currency_code) { ?>
    <?php if ($currency['symbol_left']) { ?>
    <a title="<?php echo $currency['title']; ?>"><b><?php echo $currency['symbol_left']; ?></b></a>
    <?php } else { ?>
    <a title="<?php echo $currency['title']; ?>"><b><?php echo $currency['symbol_right']; ?></b></a>
    <?php } ?>
    <?php } else { ?>
    <?php if ($currency['symbol_left']) { ?>
    <a title="<?php echo $currency['title']; ?>" onclick="$('input[name=''currency_code'']').attr('value', '<?php echo $currency['code']; ?>'); $(this).parent().parent().submit();"><?php echo $currency['symbol_left']; ?></a>
    <?php } else { ?>
    <a title="<?php echo $currency['title']; ?>" onclick="$('input[name=''currency_code'']').attr('value', '<?php echo $currency['code']; ?>'); $(this).parent().parent().submit();"><?php echo $currency['symbol_right']; ?></a>
    <?php } ?>
    <?php } ?>
    <?php } ?>
    <input type="hidden" name="currency_code" value="" />
    <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
  </div>
</form>
<?php } ?>

在这里使用多部分/表单数据有什么需要?

正如Forien所提到的,

application/x-www-form-urlencoded对特殊字符(如&'"等)进行编码。

multipart/form-data不会对任何字符进行编码。这主要用于文件(上传),因此它们不会被搞砸。