gpt4 book ai didi

java - 使用 Java 将文件上传和 POST 到 PHP 页面

转载 作者:可可西里 更新时间:2023-11-01 13:02:22 27 4
gpt4 key购买 nike

我需要一种上传文件并将其发布到 php 页面的方法...

我的 php 页面是:

<?php 
$maxsize = 10485760;
$array_estensioni_ammesse=array('.tmp');
$uploaddir = 'uploads/';
if (is_uploaded_file($_FILES['file']['tmp_name']))
{
if($_FILES['file']['size'] <= $maxsize)
{
$estensione = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], "."), strlen($_FILES['file']['name'])-strrpos($_FILES['file']['name'], ".")));
if(!in_array($estensione, $array_estensioni_ammesse))
{
echo "File is not valid!\n";
}
else
{
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
echo "File ". $_FILES['file']['name'] ." uploaded successfully.\n";
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
echo "File is valid, and was successfully moved.\n";
}
else
print_r($_FILES);
}
}
else
echo "File is not valid!\n";
}
else
{
echo "Upload Failed!!!";
print_r($_FILES);
}
?>

我在我的桌面应用程序中使用这个 java 代码:

HttpURLConnection httpUrlConnection = (HttpURLConnection)new URL("http://www.mypage.org/upload.php").openConnection();
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setRequestMethod("POST");
OutputStream os = httpUrlConnection.getOutputStream();
Thread.sleep(1000);
BufferedInputStream fis = new BufferedInputStream(new FileInputStream("tmpfile.tmp"));

long totalByte = fis.available();
long byteTrasferred = 0;
for (int i = 0; i < totalByte; i++) {
os.write(fis.read());
byteTrasferred = i + 1;
}

os.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
httpUrlConnection.getInputStream()));

String s = null;
while ((s = in.readLine()) != null) {
System.out.println(s);
}
in.close();
fis.close();

但我总是收到“上传失败!!!”消息。

最佳答案

即使线程很旧,可能仍然有人在寻找更简单的方法来解决这个问题(比如我:))

经过一番研究,我找到了一种无需更改原始发布者的 Java 代码即可上传文件的方法。您只需使用以下 PHP 代码:

<?php
$filename="abc.xyz";
$fileData=file_get_contents('php://input');
$fhandle=fopen($filename, 'wb');
fwrite($fhandle, $fileData);
fclose($fhandle);
echo("Done uploading");
?>

此代码只是获取 java 应用程序发送的原始数据并将其写入文件。但是有一个问题:您得不到原始文件名,所以您必须以其他方式传输它。

我通过使用 GET 参数解决了这个问题,这对 Java 代码做了一些必要的更改:

HttpURLConnection httpUrlConnection = (HttpURLConnection)new URL("http://www.mypage.org/upload.php").openConnection();

更改为

HttpURLConnection httpUrlConnection = (HttpURLConnection)new URL("http://www.mypage.org/upload.php?filename=abc.def").openConnection();

在您的 PHP 脚本中,您更改行

$filename="abc.xyz";

$filename=$_GET['filename'];

这个解决方案不使用任何外部库,在我看来比其他一些已发布的解决方案简单得多......

希望我能帮助到任何人:)

关于java - 使用 Java 将文件上传和 POST 到 PHP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314249/

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