0

我正在开发一个网页,该网页在大多数浏览器中运行良好,但在 Opera Mini 中却不行。不幸的是,我在上传文件时遇到了问题。我一直试图解决它几个小时。我有这个 javascript:

                $("body").append('<form id="opera-mini-uploader" method="POST" enctype="multipart/form-data"><input type="hidden" name="hiddenValues" id="hidden-values" value=""><input type="file" name="src"><input type="submit" id="upload-opera-mini" name="upload-opera-mini" value="upload"></form>');
                $("#opera-mini-uploader").submit(function() {
                    $("#hidden-values").val(JSON.stringify({
                        "product-title": $("#product-title").val(),
                        "product-description": $("#product-description").val(),
                        "category-id": $("#category-id").val(),
                        "product-price": $("#product-price").val(),
                        "varsity": $("#varsity").val(),
                        "campus-of-varsity": $("#campus-of-varsity").val(),
                        "telephone": $("#telephone").val(),
                        "repeat-telephone": $("#repeat-telephone").val(),
                        "iagree": $("#iagree").prop("checked")
                    }));
                });

它创建一个带有文件输入的表单并处理提交以在文件上传时保存其他属性。属性保存得很好,但是文件没有上传...表单出现在正文的末尾,当我选择一个文件并尝试上传它时,它没有成功。我没有看到错误,但文件也没有上传。我的问题是:我做错了什么?我应该如何实现文件上传以在服务器上实际拥有一些文件?文件上传适用于其他浏览器,但这里我为此创建了一个单独的版本,因为 Opera Mini 无法满足花哨的功能。

4

1 回答 1

0

经过长时间的实验,我找到了答案:

$("body").append('<form id="opera-mini-uploader" method="POST" enctype="multipart/form-data"><input type="hidden" name="hiddenValues" id="hidden-values" value=""><input type="file" name="src"><input type="submit" id="upload-opera-mini" name="upload-opera-mini" value="upload"></form>');

上面的代码创建了form,但submit事件不会绑定到它。而不是这一代,我决定通过将其添加为 HTML 来测试它,如下所示:

<form id="opera-mini-uploader" method="POST" enctype="multipart/form-data"><input type="hidden" name="hiddenValues" id="hidden-values" value=""><input type="file" name="src"><input type="submit" id="upload-opera-mini" name="upload-opera-mini" value="upload"></form>

它就像一个魅力,没有额外的变化。

于 2015-01-06T11:40:05.097 回答