使用XMLHttpRequest和FileList发布本地文件
Post local file using XMLHttpRequest and FileList
我正试图将一个图像发送到服务器,并获取它的新名称(我移动并重命名服务器上的文件)
我可以使用FileList对象吗
我尝试了以下代码,但我的响应是空的,尽管我没有得到任何错误。
HTML:
<input type="file" name="upfile" onchange="SelectImage(this);" />
JavaScript:
function SelectImage(obj)
{
var req = new XMLHttpRequest();
req.open('POST', 'upload_image.php', true);
req.setRequestHeader('Content-type', 'multipart/form-data');
req.send(obj.files);
req.onreadystatechange = function()
{
if (req.readyState == 4 && req.status == 200)
console.log(req.responseText);
};
}
PHP:
try
{
// all kind of checks to make sure the file is valid
// else throw a RuntimeException()
// then the next code:
$movedFile = sprintf('./uploads/%s.%s',
sha1_file($_FILES['upfile']['tmp_name']),
$ext // derived from mime type check
);
if (!move_uploaded_file($_FILES['upfile']['tmp_name'], $movedFile))
{
throw new RuntimeException('Failed to move uploaded file.');
}
echo $movedFile;
}
catch (RuntimeException $e)
{
echo $e->getMessage();
}
您必须使用FormData
对象才能使用xhr
发送文件。尝试按以下重写SelectImage
function SelectImage(obj) {
var req = new XMLHttpRequest();
var data = new FormData();
req.open('POST', 'upload_image.php', true);
req.setRequestHeader('Content-type', 'multipart/form-data');
data.append('upfile', obj.files[0]);
req.send(data);
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200)
console.log(req.responseText);
};
}
在服务器端,您将获得upfile
中的文件。
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 使用本地文件而不是$.getJSON
- 是否可以在javascript中读取IE中的本地文件
- 访问离线jquery应用程序中的本地文件
- 将本地文件传递给第三方框架
- qoxdoo中的离线存储是否与所有浏览器和本地文件系统兼容
- Node.js-如何链接到本地文件
- jquery自动完成从本地文件获取数据
- Chrome中的本地文件访问
- 将工厂作为本地文件的Angular JS,文件中包含JSON
- 是否有WebKit的实现可以方便地访问本地文件系统
- 从本地文件运行时,$.get()无法正常工作
- 如何通过网页读取/写入本地文件
- 在javascript中访问本地文件
- 将本地文件与媒体源一起使用
- 使用phantomjs在本地文件上使用extjs代理进行ajax调用
- 如何在IE9中使用ajax启用加载本地文件
- 如何从 Django 浏览本地文件并存储文件信息
- 咕噜咕噜连接退出而不是提供本地文件
- 巴比伦JS-场景从本地文件下载