例如,假设货币模块的视图文件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
不会对任何字符进行编码。这主要用于文件(上传),因此它们不会被搞砸。