问题
嗨,我揭露了整天仍然存在的问题。在我的网站上,Ajax上传了许多用base64编码保存在PHP数据库中的图像。如果base64 blob字符串足够大,显然,此请求还需要几分钟。
我首先尝试在File中对该base64字符串进行编码,然后将其返回给Ajax,以便使用FileReader方法将其转换回base64并避免延迟,但是我没有找到任何解决方案。
我试图通过尝试将图像保存在我网站上的特定目录中并将其URL保存在数据库中以将其插入到元素“”的属性“ src”中来解决此问题,一次将其返回给Ajax。
我是PHP的新手,这些过程并不那么简单。问题是我找到了一种直接从PHP上传到特定目录的方法。
我希望您的解决方案或想法有别的救援模式。
HTML
<div class="container" align="center">
<form align="center" id="myForm" action = "https://giuseppemondelli.altervista.org/php/formTest.php">
<label>Select Image</label>
<input id="file" name="file" type="file"/>
<button name="submit" type="submit">Submit</button>
<img id="preview" alt="YOURIMAGE" src="#" height="150px" width="150px">
</form>
</div>
PHP
<?php
if($_FILES["file"]["name"] != '')
{
$connessione = mysqli_connect('localhost','giuseppemondelli','') or die (mysqli_errno ($connessione). mysqli_error ($connessione));
$db = mysqli_select_db($connessione, "my_giuseppemondelli") or die ('Database non trovato!');
$fileName = $_FILES["file"]["name"];
$fileTmpName = $_FILES["file"]["name"];
$fileExtention = strtolower(pathinfo($fileName ,PATHINFO_EXTENSION));
$fileRoundName = round(microtime(true)) . mt_rand() . '.' . $fileExtention;
$filePath = '/uploads/' . $fileRoundName;
$destination = $_SERVER['DOCUMENT_ROOT'] . $filePath;
if(!move_uploaded_file($fileTmpName, $destination))
{
echo "Impossibile caricare il file";
}
else
{
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';
$domain = $protocol . $_SERVER['SERVER_NAME'];
$url = $domain . $path;
$query = "INSERT INTO Files(File) VALUES ('$url')";
mysqli_query($connessione, $query);
}
/*$query2 = "SELECT File FROM Files";
$risultato2 = mysqli_query($connessione, $query2);
while($row = mysqli_fetch_assoc($risultato2))
{
echo $row['File'];
}*/
mysqli_close($connessione);
}
?>
AJAX
$(function() //form
{
$(document).on('submit', '#myForm', function(event)
{
$.ajax(
{
type: 'POST',
url: 'http://giuseppemondelli.altervista.org/php/formTest.php',
data: formData,
contentType: false,
cache: false,
processData: false,
success: function(data)
{
console.log(data);
}
});
event.preventDefault();
event.stopPropagation();
});
});