問題描述
我需要一種上傳文件并將其發布到 php 頁面的方法...
I need a way to upload a file and POST it into php page...
我的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!
";
}
else
{
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
echo "File ". $_FILES['file']['name'] ." uploaded successfully.
";
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
echo "File is valid, and was successfully moved.
";
}
else
print_r($_FILES);
}
}
else
echo "File is not valid!
";
}
else
{
echo "Upload Failed!!!";
print_r($_FILES);
}
?>
我在我的桌面應用程序中使用這個 java 代碼:
and i use this java code in my desktop application:
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();
但我總是收到上傳失敗!!!"消息.
But I receive always the "Upload Failed!!!" message.
推薦答案
即使線程很老了,可能還是有人在尋找更簡單的方法來解決這個問題(比如我:))
Even though the thread is very old, there may still be someone around looking for a more easy way to solve this problem (like me :))
經過一番研究,我找到了一種在不更改原始海報 Java 代碼的情況下上傳文件的方法.您只需要使用以下 PHP 代碼:
After some research I found a way to uplaod a file without changing the original poster's Java-Code. You just have to use the following PHP-code:
<?php
$filename="abc.xyz";
$fileData=file_get_contents('php://input');
$fhandle=fopen($filename, 'wb');
fwrite($fhandle, $fileData);
fclose($fhandle);
echo("Done uploading");
?>
此代碼只是獲取 java 應用程序發送的原始數據并將其寫入文件.然而,有一個問題:你沒有得到原始文件名,所以你必須以其他方式傳輸它.
This code is just fetching the raw data sent by the java-application and writing it into a file. There is, however one problem: You dont get the original filename, so you have to transmit it somehow else.
我通過使用 GET 參數解決了這個問題,這對 Java 代碼進行了一些必要的更改:
I solved this problem by using a GET-Parameter, which makes a little change in the Java-code necessary:
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 腳本中更改行
In your PHP-script you change the line
$filename="abc.xyz";
到
$filename=$_GET['filename'];
這個解決方案不使用任何外部庫,在我看來比其他一些發布的更簡單......
This solution doesn't use any external librarys and seems to me much more simple than some of the other posted ones...
希望我能幫助任何人:)
Hope I could help anyone:)
這篇關于使用 Java 將文件上傳和 POST 到 PHP 頁面的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!