Heim Backend-Entwicklung PHP-Tutorial android上传图片到PHP后台全过程

android上传图片到PHP后台全过程

Jun 23, 2016 pm 01:29 PM

PS:便宜的服务器可是会不定时的坑你一把。     

今天在修改app的一些交互以及重构代码。一切都是那么顺利,啪啪啪,runing,测试没问题,再啪啪啪。。。

突然,测试上传头像的时候,老是连接超时。。。。报如下错误:

XXXXXXSokcetTimeOutXXXXXXXX

然后自己设置HTTP的超时时间:

  //设置超时时间  httpclient.setTimeout(20000);
Nach dem Login kopieren

再building,runing,还是不行。。。。这就怪了,明明好好的,怎么会突然就变成连接超时了呢!又折腾了一阵子后,也跟后台那边的朋友沟通过,他也测试了上传接口,发现没什么问题,就让我自己去折腾去了。。。。

我就郁闷了,看不出原先的代码有什么错误,也没什么法子了,就出最下下策吧,自己搭一个PHP上传图片接口,亲自测试下到底是怎么回事。。。。


1.首先,你得下一个方便快捷的PHP服务器,我这里用了WampServer,百度----下载-----安装-----启动,浏览器输入:http://127.0.0.1 有页面显示,OK了。就这么简单!

2.浏览器输入 : http://本机IP地址    回车,   发现报错,类似“You don't have permission to access / on this server”  说明你的WM还没设置,需要进行如下设置:

造成这个问题的原因是Apache 的http.conf内的默认配置是
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
只允许127.0.0.1访问,点击wampserver图标让后点击Putonline,http.conf内的以上默认配置自动修改为
# onlineoffline tag - don't remove
Order Allow,Deny
Allow from all
现在localhost可以访问了。

同样phpMyadmin在localhost下不能正常访问在127.0.0.1能正常访问,解决方法:
点击根目录下的alias目录,打开phpmyadmin.conf配置文件,和上面修改http.conf一样把
Deny from all
Allow from 127.0.0.1
修改为
Allow from all


3. 再此输入 : http://本机IP地址    回车    显示页面    OK!   至于为什么要第二步、第三步呢,我就不说了。。。留给新人去想想吧! 大神直接无视。。。。。

4.写一个上传图片的PHP文件,当然我一个敲java的孩子一下子怎么可能憋的出来,那怎么办,当然是百度参考别人的了,下面的PHP代码源自网络,亲测没有错误:

<?php $base_path = "./upload/"; //存放目录if(!is_dir($base_path)){    mkdir($base_path,0777,true);}$target_path = $base_path . basename ( $_FILES ['attach'] ['name'] );if (move_uploaded_file ( $_FILES ['attach'] ['tmp_name'], $target_path )) {	$array = array (			"status" => true,			"msg" => $_FILES ['attach'] ['name'] 	);	echo json_encode ( $array );} else {	$array = array (			"status" => false,			"msg" => "There was an error uploading the file, please try again!" . $_FILES ['attach'] ['error'] 	);	echo json_encode ( $array );}?>
Nach dem Login kopieren

5.将上面的php文件放在WM安装目录下的www目录下,我的如下图所示,仅供参考:




6.经过上面几个步骤,PHP端已经搭建好了,现在就是回到android端改改IP地址测试下就oK了,代码段如下:

	       //HTTP上传图片		RequestParams params = new RequestParams();		try {			//将压缩后的bitmap保存为图片文件			String saveImgPath=getSD_Path()+"/saveimg.png";			File saveimg=new File(saveImgPath);			FileOutputStream fos = new FileOutputStream(saveimg);			bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);			fos.flush();			fos.close();			//上传压缩后的文件,大约100k左右			File uploadImg=new File(saveImgPath);			<span style="color:#ff0000;">params.put("attach", uploadImg);</span>		} catch (FileNotFoundException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		}		//上传地址//		String url=URLConfigs.UploadHeadImage_ukey+myprefs.Ukey().get();		<span style="color:#ff0000;">String url="http://192.168.0.8/upload.php";</span>//		LogUtil.e(TAG, "upload img url :"+url);		AsyncHttpUtil.post_loading(context,url, params, new MyTextHttpResponseHandler() {			@Override			public void onSuccess(int status, Header[] arg1, String json) {				super.onSuccess(status, arg1, json);				LogUtil.e(TAG, "上传图片  json :"+json);				RespondBaseEntity entity=GsonUtil.GetFromJson(json, RespondBaseEntity.class);				if(entity.isStatus()){					//上传成功,设置图片					face.setImageBitmap(bmp);					ToastUtils.show(context, "上传成功");				}else{					ToastUtils.show(context, json);				}								myprefs.position().put(0);			}						@Override			public void onFailure(int arg0, Header[] arg1, String arg2, Throwable arg3) {				super.onFailure(arg0, arg1, arg2, arg3);				myprefs.position().put(0);//				arg3.printStackTrace();				ToastUtils.show(context, R.string.network_unavailable);			}
Nach dem Login kopieren

params.put("attach", uploadImg);  这里的attach参数是和服务端一一对应的,别乱改。。。。

String url="http://192.168.0.8/upload.php";   这个192.168.0.8是我的PHP部署的地址,改成你自己的就行了。


PS:别犯2,用了127.0.0.1    想想为啥不能用127.0.0.1

到此就是building,runing了。  发现OK。。。。   可以上传,并在www目录下找到upload目录,upload目录下有上传的图片。。。。




7.这就纳闷了。。。。 我又鼓起勇气找了PHP后端,跟他激烈的讨论一番后,发现是服务器坑了爹啊!  800块一年的服务器。。。。。唉。。。不说了。。。。



版权声明:本文为博主原创文章,未经博主允许不得转载。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP -Protokollierung: Best Practices für die PHP -Protokollanalyse PHP -Protokollierung: Best Practices für die PHP -Protokollanalyse Mar 10, 2025 pm 02:32 PM

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

See all articles