当我调试时,我在httppost.setEntity(mpEntity);
中放置一个断点,file
属性的值为 /storage/emulated/0/aaaa/20150529_104715.jpg
我保存文件的路径为http://aaaa.com/app/imagenes/
,路径upload.php
为http://aaaa.com/app
这是我的代码:
atributes:
private List<NameValuePair> params = new ArrayList<NameValuePair>(1);
private File file;
private String imageFileName = "";
private String urlImag ="http://aaaa.com/app/imagenes/";
private EditText etNombreProducto,etDescripcion,etPrecioDia,etPrecioSemana;
private Bitmap bitmap=null;
方法
public void takePhoto() {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
imageFileName = timeStamp + ".jpg";
//Creamos el Intent para llamar a la Camara
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
//Creamos una carpeta en la memeria del terminal
File imagesFolder = new File(
Environment.getExternalStorageDirectory(), "aaaa");
imagesFolder.mkdirs();
//anadimos el nombre de la imagen
file= new File(imagesFolder, imageFileName);
Uri uriSavedImage = Uri.fromFile(file);
//Le decimos al Intent que queremos grabar la imagen
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
//Lanzamos la aplicacion de la camara con retorno (forResult)
startActivityForResult(cameraIntent, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//Comprovamos que la foto se a realizado
if (requestCode == 1 && resultCode == RESULT_OK) {
//Creamos un bitmap con la imagen recientemente
//almacenada en la memoria
bitmap= BitmapFactory.decodeFile(
Environment.getExternalStorageDirectory() +
"/aaaa/" + imageFileName);
// //Anadimos el bitmap al imageView para
// //mostrarlo por pantalla
// img.setImageBitmap(bMap);
}
}
private boolean uploadFoto(String imag){
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost("http://aaaa.com/app/upload.php");
MultipartEntity mpEntity = new MultipartEntity( );
ContentBody contentBody = new FileBody(file,"image/jpeg");
mpEntity.addPart("foto", contentBody);
httppost.setEntity(mpEntity);
try {
httpclient.execute(httppost);
httpclient.getConnectionManager().shutdown();
return true;
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
private boolean onInsert(){
String nombreP = etNombreProducto.getText().toString();
String descripcion = etDescripcion.getText().toString();
String precioD = etPrecioDia.getText().toString();
String precioS=etPrecioSemana.getText().toString();
HttpClient httpclient;
params.add(new BasicNameValuePair("nombre", nombreP));
params.add(new BasicNameValuePair("descripcion", descripcion));
params.add(new BasicNameValuePair("preciodia", precioD));
params.add(new BasicNameValuePair("preciosemana", precioS));
params.add(new BasicNameValuePair("imagen", urlImag + imageFileName));
HttpPost httppost;
httpclient=new DefaultHttpClient();
httppost= new HttpPost("http://aaaa.com/app/insertProduct.php");
// Url del Servidor
try {
httppost.setEntity(new UrlEncodedFormEntity(params));
httpclient.execute(httppost);
return true;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
private void serverUpdate(){
if (file.exists())
new ServerUpdate().execute();
else
Toast.makeText(UploadProduct.this, "Debes de hacer una foto",
Toast.LENGTH_LONG).show();
}
class ServerUpdate extends AsyncTask<String,String,String> {
ProgressDialog pDialog;
@Override
protected String doInBackground(String... arg0) {
Boolean b=uploadFoto(imageFileName);
if(onInsert()&& b)
runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(UploadProduct.this, "Exito al subir la imagen",
Toast.LENGTH_LONG).show();
}
});
else
runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(UploadProduct.this, "Sin exito al subir la imagen",
Toast.LENGTH_LONG).show();
}
});
return null;
}
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(UploadProduct.this);
pDialog.setMessage("Actualizando Servidor, espere..." );
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDialog.show();
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
pDialog.dismiss();
}
}
我的upload.php
<?php
$ruta = "app/imagenes/" .basename($_FILES['foto']['name']);
if(move_uploaded_file($_FILES['foto']['tmp_name'], $ruta)){
echo "success";
} else{
echo "fail";
}
?>
答案 0 :(得分:1)
在我的情况下,我必须将绝对路径放在我的php文件中。
<强> upload.php的强>
<?php
// En versiones de PHP anteriores a 4.1.0, $HTTP_POST_FILES debe utilizarse en lugar
// de $_FILES.
$uploaddir = '/var/www/vhosts/aaaa.com/httpdocs/app/imagenes/';
$uploadfile = $uploaddir . basename($_FILES['foto']['name']);
echo 'bien';
if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) {
echo "El archivo es válido y fue cargado exitosamente.\n";
} else {
echo "¡Posible ataque de carga de archivos!\n";
echo $_SERVER['DOCUMENT_ROOT'];
}
echo 'Aquí hay más información de depurado:';
?>
感谢您的帮助
答案 1 :(得分:0)
$profilepic = $_FILES ['foto'] ['name'];
// let if jpeg image
$extension='.jpeg';
function saveImageInServer($profileimage, $email,$extension ) {
$dir = '/var/www/users';
if (is_dir ( $dir ) == false) {
mkdir ( $dir );
}
chmod ( $dir, 0777 );
$target_Path = $dir . "/" . $email . "." . $extension;
move_uploaded_file ( $_FILES ['proiflepic'] ['tmp_name'], $target_Path );
chmod ( $target_Path, 0777 );
}