在项目开发中,需要上传图片和文件到服务器端,所以需要安卓模拟文件表单提交。
安卓端代码:
private String uploadFile()
{
DebugLogger.d(TAG, "start upload img!");
String end ="\r\n";
String twoHyphens ="--";
String boundary ="*****";
try
{
URL url =new URL(server_img);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
/* 允许Input、Output,不使用Cache */
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
/* 设置传送的method=POST */
con.setRequestMethod("POST");
/* setRequestProperty */
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Type",
"multipart/form-data;boundary="+boundary);
/* 设置DataOutputStream */
DataOutputStream ds =
new DataOutputStream(con.getOutputStream());
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disposition: form-data; "+
"name=\"uploaded\";filename=\""+
device_id+"\""+ end);
ds.writeBytes(end);
/* 取得文件的FileInputStream */
String imgUrl=Environment.getExternalStorageDirectory()+"/CameraOn/10.jpg";;
FileInputStream fStream =new FileInputStream(imgUrl);
/* 设置每次写入1024bytes */
int bufferSize =1024;
byte[] buffer =new byte[bufferSize];
int length =-1;
/* 从文件读取数据至缓冲区 */
while((length = fStream.read(buffer)) !=-1)
{
/* 将资料写入DataOutputStream中 */
ds.write(buffer, 0, length);
}
ds.writeBytes(end);
ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
/* close streams */
fStream.close();
ds.flush();
/* 取得Response内容 */
InputStream is = con.getInputStream();
int ch;
StringBuffer b =new StringBuffer();
while( ( ch = is.read() ) !=-1 )
{
b.append( (char)ch );
}
/* 将Response显示于Dialog */
//showDialog("上传成功"+b.toString().trim());
DebugLogger.d("upload img", "upload img success!");
DebugLogger.d("upload img", b.toString());
//displayToast("UPLOAD img success!");
/* 关闭DataOutputStream */
ds.close();
return b.toString();
}
catch(Exception e)
{
DebugLogger.d("upload img", "upload img failed!");
//displayToast("upload failed");
//showDialog("上传失败"+e);
return "failed!";
}
}
服务器端php代码:
<?PHP
/* $target = "upload/";
$target = $target.basename($_FILES['uploaded']['name']);
$ok = 1;
if(move_uploaded_file($_FILES['uploaded']['temp_name'], $target))
{
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
}
else
{
echo "Sorry, there was a problem uploading your file.";
}*/
//require_once 'inc_thumb.php';
$pp = "upload/";
$FileID=date("Ymd-His") . '-' . rand(100,999);
/*$typeName = basename($_FILES['uploaded']['name']);
$indexFrom = strpos($typeName, ".");
$jpgLength = strlen($typeName);*/
$target = $pp.$FileID;//.substr($typeName, $indexFrom, $jpgLength-$indexFrom);//basename($_FILES['uploaded']['name']);
$thumb = $pp.$FileID."th".basename($_FILES['uploaded']['name']);
$ok=1;
//echo "------".substr($typeName, $indexFrom, $jpgLength-$indexFrom)."---".$target."--";
if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$target))
{
//makethumb($target,$thumb,"75","75");
echo "The file ".basename($_FILES['uploaded']['name'])." has been uploaded successful.";
}
else
{
echo "Sorry, there was a problem uploading your file.failed";
}