gpt4 book ai didi

java - 使用PHP将文件从android(java)上传到服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:05 24 4
gpt4 key购买 nike

您好,我正在尝试使用 PHP 将文件从我的 Android 应用程序上传到我的服务器。

我已经阅读了这篇文章:

How to upload a file using Java HttpClient library working with PHP http://www.veereshr.com/Java/Upload How do I send a file in Android from a mobile device to server using http?

这是我的 JAVA 代码:

public void upload() throws Exception {

File file = new File("data/data/com.tigo/databases/exercise");

Log.i("file.getName()", file.getName());

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://***.***.***.***/backDatabase.php");

InputStreamEntity reqEntity = new InputStreamEntity( new FileInputStream(file), -1);
reqEntity.setContentType("binary/octet-stream");

reqEntity.setChunked(true);
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);

if((response.getStatusLine().toString()).equals("HTTP/1.1 200 OK")){
// Successfully Uploaded
Log.i("uploaded", response.getStatusLine().toString());
}
else{
// Did not upload. Add your logic here. Maybe you want to retry.
Log.i(" not uploaded", response.getStatusLine().toString());
}

httpclient.getConnectionManager().shutdown();
}

这是我的 PHP 代码:

<?php


$uploads_dir = '/tigo/databaseBackup';

if (is_uploaded_file($_FILES['exercise']['tmp_name']))
{

$info = "File ". $_FILES['exercise']['name'] ." uploaded successfully.\n";
$file = 'emailTest.log';
file_put_contents($file, $info, FILE_APPEND | LOCK_EX);

move_uploaded_file ($_FILES['exercise'] ['tmp_name'], $_FILES['exercise'] ['name']);

}
else
{

$info = "Possible file upload attack: ";
$file = 'emailTest.log';
file_put_contents($file, $info, FILE_APPEND | LOCK_EX);

$info = "filename '". $_FILES['exercise']['tmp_name'] . "'.";
file_put_contents($file, $info, FILE_APPEND | LOCK_EX);

print_r($_FILES);

}

?>

在我的 logcat 中,我得到 HTTP/1.1 200 OK。当我查看服务器日志时,出现此错误:

PHP Notice:  Undefined index: exercise in /var/www/backDatabase.php on line 23

我也尝试过使用:

$_FILES['userfile']['name']

代替

$_FILES['exercise']['tmp_name']

我的服务器日志中出现了同样的错误。

我认为我的问题是我无法获得对我上传文件的引用。

感谢您的帮助。

最佳答案

尝试多部分实体

public void upload(String filepath) throws IOException
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost("url");
File file = new File(filepath);
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "image/jpeg");
mpEntity.addPart("userfile", cbFile);
httppost.setEntity(mpEntity);
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
// check the response and do what is required
}

关于java - 使用PHP将文件从android(java)上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20995118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com