- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 php 表单,它通过文本框和 1 个 HTML 输入类型 FILE 接受很少的值,但我的文本框数据存储到数据库中,而我的文件名则没有。正在将图像上传到服务器目录并将其名称存储到数据库中。
Index.html
<!DOCTYPE HTML>
<html>
<head>
<script language="javascript" type="text/javascript" src="js/TabActions.js"></script>
</head>
<body>
<form>
<table width="100%" border="0" align="center" >
<input type="hidden" name="ExCategory" id="ExCategory" value="Meal">
<tr>
<td>Description:<br><textarea rows="4" cols="30" name= "Descr" maxlength="100"></textarea></td>
</tr></table>
<table width="100%" border="0" align="center" >
<tr>
<td> Date:</td>
<td><input type="DATE"required name="ClaimDate" id="ClaimDate"/></td>
<td colspan = 3><input type=file name="ClaimReceipt" id="ClaimReceipt" accept="image/jpeg,image/jpg,image/png/image/gif"></td>
</tr>
<tr>
<td>Amount:</td>
<td> <input type="number" size="5" name="ClaimAmt" id="ClaimAmt" required Placeholder="<?php echo "In ".$Currency; ?>" ></td>
</tr>
<tr>
<td colspan="6" >
<table border="0" Width="30%" height=40px >
<tr>
<td><input type="Button" value="Add" onclick="addFunction(ExCategory.value,Descr.value,ClaimDate.value,ClaimAmt.value,ClaimReceipt.value)"></td>
</tr></table></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Action.js
function addFunction(ExCategory,Descr,ClaimDate,ClaimAmt,ClaimReceipt)
{
var ajaxRequest; // The variable that makes Ajax possible!
try
{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer Browsers
try
{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function()
{
if(ajaxRequest.readyState==4 && ajaxRequest.status==200)
{
document.getElementById('Res').innerHTML = ajaxRequest.responseText;
}
}
ajaxRequest.open("POST","insert.php", true);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxRequest.send("Add=102&ExCategory="+ExCategory+"&Descr="+Descr+"&ClaimDate="+ClaimDate+"&ClaimAmt="+ClaimAmt+"&ClaimReceipt="+ClaimReceipt);
}
插入.php
<?php
session_start();
//error_reporting(E_ERROR);
$User = 'User';
if (isset($_POST['ClaimDate']))
{
$ClaimDate = $_POST['ClaimDate'];
}
else
{
$ClaimDate = $_POST['ClaimTo'];
}
$ExCategory = $_POST['ExCategory'];
if(isset($_POST['Descr']))
{
$ClaimClass = stripslashes($_POST['Descr']);
}
else
{
$ClaimClass = 'No description';
}
If(isset($_POST['ClaimFrom']) && isset($_POST['ClaimFrom']))
{
$ClaimFrom = $_POST['ClaimFrom'];
$ClaimTo = $_POST['ClaimTo'];
}
else
{
$ClaimFrom = 'Null';
$ClaimTo = 'Null';
}
$ClaimAmt = $_POST['ClaimAmt'];
if (isset($_POST['Add']))
{
if (isset($_FILES['ClaimReceipt']))
{
if(isset($_SESSION['counter']))
{
$Counter = $_SESSION['counter'];
}
else
{
$Counter = 0;
}
$Receipt = $_FILES['ClaimReceipt'];
$file_type= $Receipt['type'];
$file_path=$_FILES["ClaimReceipt"]["tmp_name"];
$file_name = $UserID."(".$Counter.").jpeg";
if($file_type!= '' && ($file_type="image/jpeg" || $file_type="image/png") && $file_size < 50000)
{
move_uploaded_file($file_path,"uploads/".$file_name);
$ClaimReceipt = $file_name;
$warning = '';
$Counter++;
$_SESSION['counter'] = $Counter;
}
else
{
$_SESSION['counter'] = $Counter;
$warning = "Please check format '.jpeg or .png' for attachments and its size < 500 kb";
}
}
Else
{
$_SESSION['counter'] = $Counter;
$ClaimReceipt = '';
}
include('dbcon.php');
$stmt = $dbh->prepare("CALL sp_AddExpensesEntry(?,?,?,?,?,?)");
$stmt ->execute(array($User,$ExCategory,$ClaimDate,$ClaimAmt,$ClaimClass,$ClaimReceipt));
$dbh->connection = null;
}
?>
数据库表
CREATE TABLE `MyExp` (
`UserName` varchar(45) NOT NULL,
`ExCategory` varchar(15) NOT NULL,
`ClaimDate` varchar(10) NOT NULL,
`ClaimAmt` int(11) NOT NULL,
`ClaimDesc` varchar(100) DEFAULT NULL,
`ClaimReceipt` varchar(20) DEFAULT NULL,
`ClaimRowid` int(7) NOT NULL AUTO_INCREMENT,
UNIQUE KEY `ClaimRowid_UNIQUE` (`ClaimRowid`)
)
sp_AddExpensesEntry 存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_AddExpensesEntry`(
In UserName Varchar(45),
In Category varchar(15),
In Claimdate varchar(10),
In Amt int,
In Descr varchar(100),
In ImgURL VARCHAR(20)
)
proc_main:BEGIN
Declare RowId int;
If Exists(Select ClaimRowid from MyExp) then
Set RowId = (Select ClaimRowid from MyExp Order by ClaimRowid desc limit 1) + 1;
Else
Set RowId = 1;
End If;
INSERT INTO `MyExp`
VALUES
(
UserName,
category,
Claimdate,
Amt,
Descr,
ImgURL,
RowId
);
commit;
END
请帮我解决这个问题。当数据在没有 AJAX 的情况下存储到数据库中时,文件存储机制运行良好,但为了避免页面重新加载,我尝试这样做。提前致谢。
最佳答案
要发布文件,您需要使用 multipart/form-data 而不是 application/x-www-form-urlencoded。您实际上并没有通过 ajax 请求传递文件,这就是它没有存储在任何地方的原因。
关于javascript - 无法使用 HTML5 PHP 和纯 ajax 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768946/
可以抛出异常的函数可以有[pure]属性吗? 最佳答案 根据 https://msdn.microsoft.com/en-us/library/system.diagnostics.contracts
我使用的是纯 css 推送导航。它工作得很好,但是我不知道如何在单击导航链接时隐藏菜单。您必须手动单击菜单图标才能使菜单返回隐藏状态。但是,当单击链接并且站点跳转到某个部分时,我希望菜单自动滑入隐藏状
我正在尝试让纯 CSS 下拉菜单正常工作。它在很大程度上确实有效,除了其他内容似乎显示出来但我不知道为什么。 http://jsfiddle.net/uQveP/4/ 有人可以告诉我我做错了什么吗?
这个问题在这里已经有了答案: What is a "callback" in C and how are they implemented? (9 个回答) 关闭 8 年前。 我正在以这种方式实现回
我想在不使用 Javascript 或任何其他语言的情况下,使用 HTML 和 CSS 创建一个 Page Back Button。我想用纯 HTML 和 CSS 来完成。 我进行了搜索,但每次代码中
我对序言很陌生。据我所知,Pure Prolog 仅限于 Horn 子句。 这是一个非常简单的序言程序 - % student( Snr , FirstName , LastName ,
我想在加载数据时对容器使用以下加载指示器。 问题是, slider 具有固定的宽度和高度(300 像素和 300 像素),但我希望它能够动态适应容器。当我尝试添加宽度时:140px;和高度:140px
当内容超过可用宽度时,我需要启用滚动阴影。这是我试图用纯 css(没有 JS)来实现的。我遇到了很多文章,可以使用 css 多背景和背景附件来实现。如果内容是文本类型,则可以使用下面的 jsfilld
我正在编写一个上古卷轴在线插件,它由一个名为 Havok Script 的轻微修改的 Lua 5.1 引擎支持。 .这个Lua环境不允许访问os , io , package , debug模块或任何
我自己尝试过将 Arduino 库编译成他们自己的独立库并链接到 Eclipse 中的一个项目,但在此过程中遇到了一些问题。 是否有关于如何启动和运行的体面指南?我一直很难在网上找到一个真正有效的..
我在这里遇到了一些麻烦。我正在尝试使用本地存储创建一个待办事项列表,但我唯一要做的就是将列表项添加到本地存储并删除 所有项目 从本地存储中删除,但我无法从列表中删除单个 SELECTED 项目。有人可
我的问题很简单。考虑以下 CodePen .是否有可能仅使用 css 就可以获得相同的结果?换句话说,如果不使用 javascrip 如何做到这一点?非常感谢! Nachos are
我正在使用没有 jquery 的 angularjs,并尝试创建滚动事件监听器。 尝试过这种方法: $rootScope.$watch(function() { return $windo
我正在尝试使用纯 webgl 创建虚线。我知道这已经有一个问题,也许我很笨,但我不知道如何让它发挥作用。我理解这个概念,但我不知道如何在着色器中获取沿路径的距离。以前的答案有以下行: varying
我正在尝试用纯 JavaScript 制作工具提示,显示在 hover .就像 Stack Overflow 中将鼠标悬停在配置文件名称上的一个 div显示。 我尝试使用 onmouseover ,
我想要通过 AJAX 将监听器添加到新元素的想法: 例如,现在我有 hello world 我为每个 添加了一个监听器,但是当我通过 AJAX 加载新元素时,它没有监听器;我不完全确定问题是什么。
如果我错误地提出了这个问题,或者之前已经有人问过并回答过这个问题,我提前表示歉意。我的搜索发现了类似的基于 JQuery 和/或静态日期的问答,我正在寻找具有动态日期的纯 JavaScript 解决方
在 Real World Haskell, Chapter 28, Software transactional memory ,开发了一个并发的网络链接检查器。它获取网页中的所有链接,并使用 HEA
我正在尝试取消 jQuery-fy 一个聪明的 piece of code ,但有点太聪明了。 目标是simple 。将图像从桌面拖动到浏览器。 在这次 unjQueryfication 过程中,我发
如何重新创建 jQuery end() $('#id') .find('.class') .css('font',f) .end() .find('.seven') .css(b,'red') 我有什
我是一名优秀的程序员,十分优秀!