ホームページ  >  記事  >  バックエンド開発  >  Ajax (html、javascript、php) を使用して画像を非同期でアップロードする方法_PHP チュートリアル

Ajax (html、javascript、php) を使用して画像を非同期でアップロードする方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:45:53777ブラウズ

Ajax (html、javascript、php) を使用して画像を非同期でアップロードする方法

プロジェクトの最初の2日間は、写真を非同期にアップロードしてアップロードの進捗状況を表示する機能を使用する必要があったため、多くの海外の記事を見つけ、山や尾根を越えてさまざまな落とし穴に遭遇したので記録するために記事を書きました。彼らはここにいる。

HTML

リーリー

HTML コードについては特に言うことはありません。これはフォームであり、ファイル タイプの入力があります。 js部分を見てみましょう。

JavaScript

リーリー

PHP

リーリー

遇到的坑:

序列化表单,因为是文件,不能通过<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>formtarget属性指向一个当前页面隐藏的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方面我是新手,希望这篇文章能帮到更多遇到相同问题的人。如果哪里写的不好或者不对,还希望各位同行能够善意指出。 私は初心者です。この記事が同じ問題に遭遇したより多くの人に役立つことを願っています。何かがうまく書かれていなかったり、間違っていたりした場合は、同僚が親切に指摘してくれることを願っています。

http://www.bkjia.com/PHPjc/1036925.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/1036925.html技術記事 Ajaxを使って画像を非同期にアップロードする方法(html、javascript、php) ここ2日間、画像を非同期にアップロードしてアップロードの進捗状況を表示する機能を使う必要があったので、海外の記事をたくさん見つけて山中を歩き回りました...
🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。