android 把mp3文件大小,Android:如何将.mp3文件上传到http服务器?

我的最终工作JAVA和PHP代码,用于将Android的SD卡上传文件到我自己的Web服务器。

Java / Android代码:

private void doFileUpload() {

HttpURLConnection conn = null;

DataOutputStream dos = null;

DataInputStream inStream = null;

String existingFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/mypic.png";

String lineEnd = "rn";

String twoHyphens = "--";

String boundary = "*****";

int bytesRead, bytesAvailable, bufferSize;

byte[] buffer;

int maxBufferSize = 1 * 1024 * 1024;

String responseFromServer = "";

String urlString = "http://mywebsite.com/directory/upload.php";

try {

//------------------ CLIENT REQUEST

FileInputStream fileInputStream = new FileInputStream(new File(existingFileName));

// open a URL connection to the Servlet

URL url = new URL(urlString);

// Open a HTTP connection to the URL

conn = (HttpURLConnection) url.openConnection();

// Allow Inputs

conn.setDoInput(true);

// Allow Outputs

conn.setDoOutput(true);

// Don't use a cached copy.

conn.setUseCaches(false);

// Use a post method.

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");

conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

dos = new DataOutputStream(conn.getOutputStream());

dos.writeBytes(twoHyphens + boundary + lineEnd);

dos.writeBytes("Content-Disposition: form-data; name="uploadedfile";filename="" + existingFileName + """ + lineEnd);

dos.writeBytes(lineEnd);

// create a buffer of maximum size

bytesAvailable = fileInputStream.available();

bufferSize = Math.min(bytesAvailable, maxBufferSize);

buffer = new byte[bufferSize];

// read file and write it into form...

bytesRead = fileInputStream.read(buffer, 0, bufferSize);

while (bytesRead > 0) {

dos.write(buffer, 0, bufferSize);

bytesAvailable = fileInputStream.available();

bufferSize = Math.min(bytesAvailable, maxBufferSize);

bytesRead = fileInputStream.read(buffer, 0, bufferSize);

}

// send multipart form data necesssary after file data...

dos.writeBytes(lineEnd);

dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

// close streams

Log.e("Debug", "File is written");

fileInputStream.close();

dos.flush();

dos.close();

} catch (MalformedURLException ex) {

Log.e("Debug", "error: " + ex.getMessage(), ex);

} catch (IOException ioe) {

Log.e("Debug", "error: " + ioe.getMessage(), ioe);

}

//------------------ read the SERVER RESPONSE

try {

inStream = new DataInputStream(conn.getInputStream());

String str;

while ((str = inStream.readLine()) != null) {

Log.e("Debug", "Server Response " + str);

}

inStream.close();

} catch (IOException ioex) {

Log.e("Debug", "error: " + ioex.getMessage(), ioex);

}

}

要在服务器上运行的相关PHP代码(upload.php):

// Where the file is going to be placed

$target_path = "uploads/";

/* Add the original filename to our target path.

Result is "uploads/filename.extension" */

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {

echo "The file ". basename( $_FILES['uploadedfile']['name']).

" has been uploaded";

chmod ("uploads/".basename( $_FILES['uploadedfile']['name']), 0644);

} else{

echo "There was an error uploading the file, please try again!";

echo "filename: " . basename( $_FILES['uploadedfile']['name']);

echo "target_path: " .$target_path;

}

?>

注意事项。

1)我在SD卡的根目录中有“mypic.png”。如果您通过Mass Storage USB视图查看Android设备,则会将该文件放在您遇到的第一个目录中。

2)必须在手机上关闭USB大容量存储!或者只是从正在编写代码的计算机上完全拔掉它,以确保是这种情况。

3)我必须在与我的php文件相同的目录中创建一个“uploads”文件夹。

4)您显然必须将我编写的网址http://mywebsite.com/directory/upload.php更改为您自己的网站。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值