如何在Android中使用PHP将PDF文件上传到服务器?

时间:2017-03-01 20:13:30

标签: php android pdf httpurlconnection

我正在尝试使用Android中的PHP将PDF文件上传到服务器。为此,我获取所选文件的URI并将这些数据POST到我的服务器中的PHP文件中。这是我发布数据的地方:

URL url = new URL(url_path);
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setChunkedStreamingMode(1024);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data");

OutputStream outputStream = conn.getOutputStream();
InputStream inputStream = c.getContentResolver().openInputStream(path);
Log.e("URI",path.toString());
int bytesAvailable = inputStream.available();
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bufferSize];
int bytesRead;
while ((bytesRead = inputStream.read(buffer, 0, bufferSize)) != -1) {
    outputStream.write(buffer, 0, bytesRead);
}
Log.e("URI",String.valueOf(bytesAvailable));
outputStream.flush();
inputStream.close();

此数据发布到此php文件:

<?php
print_r($_REQUEST);
$file_name = date("U").".pdf";
$server_path = "uploads/";
$web_path = "http://mysite/uploads/";

$file = $server_path.$file_name;
file_put_contents($file,"");

$fp = fopen("php://input",'r');
echo 'fp : '.$fp;
while ($buffer = fread($fp,8192)){
    echo $buffer;
    file_put_contents($file,$buffer,FILE_APPEND | LOCK_EX);
}?>

对于每次上传,它会在我的uploads目录中创建一个新文件。但PDF的大小是0字节。我不知道为什么。请帮帮我。提前谢谢。

3 个答案:

答案 0 :(得分:2)

libc.so
<?php

    $file_path = "uploads/";

    $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path) ){
        echo "success";
    } else{
        echo "fail";
    }
 ?>

参考:http://www.coderefer.com/android-upload-file-to-server/https://github.com/vamsitallapudi/AndroidUploadFileToServer

答案 1 :(得分:2)

您可以轻松使用名为ION的库https://github.com/koush/ion,而不是自己动手。上传pdf文件就像:

Ion.with(getContext())
.load("your url")
.setMultipartFile("archive", "application/pdf", new File("path to file"))
.setCallback(...)

答案 2 :(得分:1)

最好的方法是使用Retrofit。以下是您可以使用的示例应用:https://github.com/hidrodixtion/Example-Retrofit-Image-Upload