プロジェクトの最初の2日間は、写真を非同期にアップロードしてアップロードの進捗状況を表示する機能を使用する必要があったため、多くの海外の記事を見つけ、山や尾根を越えてさまざまな落とし穴に遭遇したので記録するために記事を書きました。彼らはここにいる。
HTML コードについては特に言うことはありません。これはフォームであり、ファイル タイプの入力があります。 js部分を見てみましょう。
遇到的坑:
序列化表单,因为是文件,不能通过<code>val()
,text()
等方法获取到它的值,只能通过序列化表单提交。代码里面使用.serialize()
,有另外一种做法是使用.FormData()
来提交,但是实验过程中,一开始正常,后来报错了。在stackoverflow.com上有人看到有人遇到同样地问题,没有解决,于是就放弃了。 普通的ajax
是没办法或者说很难拿到上传进度的。这里使用了一个插件jQuery Form Plugin,使用方法很简单,原本ajax
的配置都能用,而且有很多实用功能和详尽的使用文档。推荐~ ajax
上传图片这三个参数必须配置contentType: false, cache: false, processData:false,
。 获取本地预览图,这种方法可能会有浏览器兼容性问题。
リーリー
php部分注意虽然Ajax那里使用的是<code>POST
方法,但是后台接受的时候只要是文件都是用$_FILES
。你可以通过$_FILES['file']['type']
去判断文件格式来做安全处理,我们这里只是演示。还有其他参数,比如tmp_name
是文件路径,name
是文件名。后台接收以后,你可以使用move_uploaded_file()
来将文件保存到服务器上。这里就不多说。
其他补充
另外@_w同学补充,不刷新页面还可以通过设置<code>form
的target
属性指向一个当前页面隐藏的iframe
来实现。让那个iframe
ジャンプページを更新してください。前述の jQuery Form Plugin を使用すると、これを行うこともできます。
さらに、jquery-iframe-transport プラグインをお勧めします
推奨読書<code class="language-php" hljs="">推荐阅读
ajax を使用したファイルのアップロード image-upload-example jquery-progress-bar-for-php-ajax-file-upload <code class="language-php" hljs="">uploading-files-with-ajax image-upload-example jquery-progress-bar-for-php-ajax-file-upload
<code>javascript<code class="language-php" hljs=""><code>javascript
方面我是新手,希望这篇文章能帮到更多遇到相同问题的人。如果哪里写的不好或者不对,还希望各位同行能够善意指出。 私は初心者です。この記事が同じ問題に遭遇したより多くの人に役立つことを願っています。何かがうまく書かれていなかったり、間違っていたりした場合は、同僚が親切に指摘してくれることを願っています。