【发布时间】:2014-07-16 07:07:58
【问题描述】:
我正在尝试将图像上传到我尝试过的服务器上
很多方法bt我没有得到准确的结果
我的 php 脚本是:-
<?php
//include "db.php";
if(isset($_POST['action']) && isset($_FILES['arch']))
{
if($_POST['action']==='uploadfilefromapp')
{
$newfile = basename($_FILES['arch']['name']);
if(move_uploaded_file($_FILES['arch']['tmp_name'], "files/".$newfile))
{
echo 'ok!';
/*$userfile_extn = explode(".", strtolower($_FILES['arch']['name']));
echo "extension = ".$userfile_extn;
$media_id = $_REQUEST['file_id'];
mysql_query("UPDATE media SET description= '$userfile_extn' WHERE media_id='$media_id'");
*/
}
else
{
echo 'fail!';
}
}
else
{
echo 'Go away cheater';
}
}
?>
我尝试了这段代码,但没有得到答案。
请帮帮我..拜托
package com.example.server;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
import java.util.Date;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final int SELECT_PICTURE = 0;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(android.R.id.icon);
}
public void pickPhoto(View view) {
//TODO: launch the photo picker
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK) {
System.out.println("the data.getdata "+data.getData().toString());
Bitmap bitmap = getPath(data.getData());
System.out.println(bitmap.toString());
imageView.setImageBitmap(bitmap);
}
}
private Bitmap getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column_index);
cursor.close();
// Convert file path into bitmap image using below line.
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
return bitmap;
}
public void uploadPhoto(View view) {
try {
new executeMultipartPost().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private class executeMultipartPost extends AsyncTask<String, Void, Integer>{
ProgressDialog mProgressDialog=new ProgressDialog(MainActivity.this);
@Override
protected Integer doInBackground(String... params) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
bitmap.compress(CompressFormat.JPEG, 50, bos);
byte[] data = bos.toByteArray();
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(
"http://iphmusic.com/CoolBeans/file_upload.php");
String fileName = String.format("example");
ByteArrayBody bab = new ByteArrayBody(data, fileName);
// File file= new File("/mnt/sdcard/forest.png");
// FileBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("arch", bab);
postRequest.setEntity(reqEntity);
int timeoutConnection = 60000;
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
int timeoutSocket = 60000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
System.out.println("Response: " + s);
} catch (Exception e) {
// handle exception here
e.printStackTrace();
// Log.e(e.getClass().getName(), e.getMessage());
}
return null;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
mProgressDialog.show();
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
mProgressDialog.dismiss();
/*if(result.equals(200)){
Toast.makeText(getApplicationContext(), "Searching............", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "Sorry..No result", Toast.LENGTH_LONG).show();
}*/
}
}
}
请帮帮我..
在此先感谢
【问题讨论】:
-
谢谢,但我必须使用上面的 php 脚本,我不知道我应该在哪里使用像“uploadfilefromapp”“arch”这样的脚本条件