javascript - 使用 ajax xhr_object 上传文件
问题描述
嗨,我正在尝试xmlhttprequest
使用此代码发送文件。
<script type="application/javascript">
function sendcheck(opt, id_class) {
var elts = document.querySelectorAll(id_class);
var i = 0;
var array_val = [];
if(opt=='dmd'){page = 'demande_echantillon.php';id_msg = 'msg-ech';
}else {page = 'envoi_fournisseur.php'; id_msg = 'msg';}
subject = document.getElementById("subject").value;
message = document.getElementById("message").value;
myfile = document.getElementById("myfile").value;
elts.forEach(function(id) {
if (id.checked) {
array_val[i] = id.value;
i++;
}
});
var liste_val = (array_val.length > 0) ? JSON.stringify(array_val) : "";
var xhr_object = null;
var getfile = document.getElementById("myfile");
var file = getfile.files[0];
var formData = new FormData();
formData.append("myfile", file);
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
xhr_object.open("POST", page+"?liste="+liste_val+"&subject="+subject+"&"+id_msg+"="+message+"&myfile="+formData, true);
document.getElementById(id_msg).innerHTML = "Envoi en cours ...";
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState < 4 ){
document.getElementById(id_msg).innerHTML = "Loading...";
}
else if(xhr_object.readyState == 4) {
document.getElementById(id_msg).innerHTML = xhr_object.responseText;
}
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "subject="+subject+"&liste="+liste_val+"&"+id_msg+"="+message+"&myfile="+formData;
xhr_object.send(data);
}
</script>
除了附件之外,一切都运行良好,所以我如何使用XMLHttpRequest
.
在PHP
侧面可以访问$_FILES['myfile']
以通过电子邮件将其作为附件发送。
解决方案
推荐阅读
- php - 如何避免第一行在 PHP foreach 循环中显示为空白?
- java - 使用失败的子模块解析 yang 文件:未找到包含的子模块“tailf-meta-extensions”
- java - 重新连接后卡夫卡生产者阻塞
- php - 如何检查多个文本框中的值是否存在于codeigniter中
- r - 如何在从 r 中的循环获得的图中使用 annotation_custom 或其他函数打印上标
- html - script 元素上的 charset 属性已过时
- pandas - Pandas:矢量化滑动时间窗口聚合
- c# - 我收到一条错误消息,显示“不支持给定路径的格式”。尝试将音频文件上传到共享点时
- reactjs - 如何从 FlatList 组件设置父状态?
- javascript - 更改 npm live-server 的默认浏览器