android通过http上传文件,服务器端用php写(原创)

简介: android通过http上传文件,服务器端用php写(原创)

服务器端php代码

<?php
///如果有上传文件则接收
if($_FILES){
$target_path = $target_path . basename( $_FILES['file1']['name']);
try{ if(move_uploaded_file($_FILES['file1']['tmp_name'], $target_path)) {
echo "The file ".  basename( $_FILES['file1']['name']). " has been uploaded";
}
} catch( Exception $e ) {
echo $e->getMessage();   }
}
?>

Android 代码:

package com.nbcio.baishicha.test;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class test extends Activity {
/*
* 变量声明 newName:上传后在服务器上的文件名称
* 
* uploadFile:要上传的文件路径 actionUrl:服务器对应的程序路径
*/
private String newName = "";
private String uploadFile = "";
private String actionUrl = "https://www.nbcio.com/android/upload/upload.php";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
newName = bundle.getString("fileName");
uploadFile = newName;
try {
String ok = post(actionUrl, newName);
Toast.makeText(this, "OK!", Toast.LENGTH_LONG).show();
finish();
} catch (IOException e) {
//
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* 上传文件到Server的方法 */
/**
* 
* @param actionUrl
* @param params
* @param files
* @return
* @throws IOException
*/
public static String post(String actionUrl, String FileName)
throws IOException {
String BOUNDARY = java.util.UUID.randomUUID().toString();
String PREFIX = "--", LINEND = "\r\n";
String MULTIPART_FROM_DATA = "multipart/form-data";
String CHARSET = "UTF-8";
URL uri = new URL(actionUrl);
HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
conn.setReadTimeout(5 * 1000);
// 缓存的最长时间
conn.setDoInput(true);// 允许输入
conn.setDoOutput(true);// 允许输出
conn.setUseCaches(false); // 不允许使用缓存
conn.setRequestMethod("POST");
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA
+ ";boundary=" + BOUNDARY);
DataOutputStream outStream = new DataOutputStream(
conn.getOutputStream());
// 发送文件数据
if (FileName != "") {
StringBuilder sb1 = new StringBuilder();
sb1.append(PREFIX);
sb1.append(BOUNDARY);
sb1.append(LINEND);
sb1.append("Content-Disposition: form-data; name=\"file1\"; filename=\""
+ FileName + "\"" + LINEND);
sb1.append("Content-Type: application/octet-stream; charset="
+ CHARSET + LINEND);
sb1.append(LINEND);
outStream.write(sb1.toString().getBytes());
InputStream is = new FileInputStream(FileName);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
is.close();
outStream.write(LINEND.getBytes());
}
// 请求结束标志
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
outStream.write(end_data);
outStream.flush();
// 得到响应码
int res = conn.getResponseCode();
InputStream in = null;
if (res == 200) {
in = conn.getInputStream();
int ch;
StringBuilder sb2 = new StringBuilder();
while ((ch = in.read()) != -1) {
sb2.append((char) ch);
}
}
return in == null ? null : in.toString();
}
}
相关文章
|
11天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
22天前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
23 1
|
2月前
|
关系型数据库 MySQL PHP
PHP:一种强大的服务器端脚本语言
【8月更文挑战第23天】PHP是一种被广泛使用的开源服务器端脚本语言,它的强大和灵活性使其成为开发Web应用程序的首选。本文将从PHP的基本概念、主要特性以及应用场景等方面进行深入探讨,以期帮助读者更好地理解和掌握PHP。
|
2月前
|
Oracle 关系型数据库 MySQL
PHP:一种灵活而强大的服务器端脚本语言
【8月更文挑战第22天】PHP是一种广泛使用的开源通用脚本语言,尤其适用于Web开发。它快速、灵活且易于学习,使其成为开发者的首选。本文将探讨PHP的基本概念、优点以及如何开始学习PHP。让我们一起了解这个强大的工具,开启编程之旅吧!
|
2月前
|
PHP
PHP遍历文件并同步上传到服务器
在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。
80 16
|
2月前
|
XML 安全 Android开发
Flutter配置Android和IOS允许http访问
Flutter配置Android和IOS允许http访问
50 3
|
2月前
|
缓存 数据安全/隐私保护 UED
代理服务器在HTTP请求中的应用:Ruby实例
代理服务器在HTTP请求中的应用:Ruby实例
|
2月前
|
监控 物联网 数据挖掘
PHP不仅在Web开发领域有着广泛的应用,其在服务器端的应用也非常重要
【8月更文挑战第4天】PHP不仅在Web开发领域有着广泛的应用,其在服务器端的应用也非常重要
49 8
|
3月前
|
存储 运维 Java
函数计算产品使用问题之如何使用Python的requests库向HTTP服务器发送GET请求
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
100 8
|
2月前
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
下一篇
无影云桌面