gpt4 book ai didi

php - 如何将二进制文件从android存储到mysql

转载 作者:行者123 更新时间:2023-11-29 03:07:07 26 4
gpt4 key购买 nike

我想将android发送的文件存储到mysql,但是blob字段为空。

这是我的 php 代码

<?php

$target_path = "./";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {

$fileName = $_FILES['uploadedfile']['name'];
$tmpName = $_FILES['uploadedfile']['tmp_name'];
$fileSize = $_FILES['uploadedfile']['size']; // file size
$data = file_get_contents($_FILES['uploadedfile']['tmp_name']);
mysql_connect('localhost','root','');
@mysql_select_db('client') or die("<b>Unable to specified database</b>");


$query = "INSERT INTO files (Username,f_id,PathFilename,DateSent,File,Filesize)
VALUES ('d',' ','$fileName',' ',' $data','$fileSize')";
mysql_query($query) or die('Error, query failed');
}
else
{
echo "Weak here";
}

?>

这是我在android中的代码

        Log.e(Tag, "Inside second Method");

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

// 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);

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

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos .writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
+ exsistingFileName + "" + lineEnd); // ito ung file

dos.writeBytes(lineEnd);

Log.e(Tag, "Headers are written");

// create a buffer of maximum size

int bytesAvailable = fileInputStream.available();
int maxBufferSize = 1000;
// int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bytesAvailable];

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

int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);

while (bytesRead > 0) {
dos.write(buffer, 0, bytesAvailable);
bytesAvailable = fileInputStream.available();
bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
}

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

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

// close streams
Log.e(Tag, "File is written");
fileInputStream.close();
dos.flush();
dos.close();
} catch (MalformedURLException ex) {
Log.e(Tag, "error: " + ex.getMessage(), ex);
}
catch(Exception e){
dialog.dismiss();
System.out.println("Exception : " + e.getMessage());
}

try {
BufferedReader rd = new BufferedReader(new InputStreamReader(conn
.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
Log.e("Dialoge Box", "Message: " + line);
}
rd.close();

} catch (IOException ioex) {
Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
}
}

从android上传的文件上传成功,并将文件名和大小插入到数据库中但是文件(字段)的 blob 字段显示 0B.. 请帮助我

最佳答案

尝试:

$data = mysql_real_escape_string(file_get_contents($_FILES['uploadedfile']['tmp_name']));

也许这会有所帮助

关于php - 如何将二进制文件从android存储到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568750/

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