通过AJAX上传图片-如何将文件名传递到服务器
Image Upload via AJAX - How to pass file name to server ?
我正试图使用AJAX将图像上传到Web服务器,但无法将文件名和路径传递到服务器端的PHP脚本。
这是带有JavaScript的HTML(ImageUpload01.php),它调用php:
请不要太注意粗体的行(…),因为这些是我为测试而写的脚本,但不起作用。
我写的上传图片的程序没有使用AJAX,它确实有效。而且,我在发送客户ID时使用AJAX检索数据库记录,也做了完全相同的逻辑,它也起作用了。但是AJAX中的图像上传给我带来了问题(只是因为我不知道如何传递文件名/路径
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Image Upload</title>
<script>
function showThumbnail(str)
{
var xmlhttp;
**alert(str);**
**var params = "q=" + $_FILES['file']['name'];**
if (str==="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","RunImageUpload01.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.onreadystatechange=function()
{
alert(xmlhttp.responseText);
if (xmlhttp.readyState===4 && xmlhttp.status===200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
};
xmlhttp.send(params);
}
</script>
</head>
<body>
<?php
?>
<form action="" >
<input type="file" name="file" id="file" /><br />
<input type="button" name="submit" value="Submit" onclick="return showThumbnail(file.value);" />
</form>
<div id="txtHint">
</div>
</body>
</html>
服务器端的PHP脚本(RunImageUpload01.PHP)
<?php
**$pName = $_POST['q'];**
$moved = move_uploaded_file($pName, "/var/www/vhosts/mywebsiteURL.com/store/mytest/images/temp/" . $pName);
if ($moved) {
echo "Success"
}
else {
echo "You fool, failure"
}
?>
请帮帮我,我更喜欢JavaScript而不是JQuery。
谢谢,
Isaac
您使用的是什么浏览器?这不适用于旧的浏览器(IE)。我知道你提到你更喜欢香草javascript,但如果你可以选择使用jquery,看看这个插件:http://malsup.com/jquery/form/#file-上传。它为您提供了各种变通方法和技巧,使其适用于所有浏览器。
文件名不能与文件本身一起传递。相反,使用Javascript(从file
输入元素)读取文件名,并将其作为单独的input type="hidden"
元素发送。
顺便说一下,表单元素应该包含属性enctype="multipart/form-data"
,否则文件传输可能会出现问题。
使用XHR2来代替jQuery。
http://www.w3.org/TR/XMLHttpRequest2/#the-表单数据接口
原始的XMLHttpRequest不正确地支持多部分数据。
相关文章:
- 使用JSP从服务器检索和显示图像
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 客户端服务器REST API captcha实现
- 正在将base64 jpeg从input-type=file上传到服务器
- TableExport jquery插件:文件名和扩展名问题
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 如何使用Socket.io将命令从客户端发送到服务器
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 根据HTML文件名授予web服务器写入权限
- 只需提供文件名即可将文件上传到服务器
- 如何使用fine Uploader通过删除选项将上传的文件名传递到服务器端
- 通过AJAX上传图片-如何将文件名传递到服务器
- 从远程服务器目录获取文件名列表
- 如何使用 javascript 从服务器检索文件名的名称
- 如何在使用javascript从服务器下载文件时更改文件名
- 使用浏览器将文件保存到本地系统,使用指定的文件名和扩展名html &没有服务器交互的Javascript
- Fineuploader:根据服务器响应改变UI文件名