上传图片发现浏览器不兼容问题,求解决

Squall001 2016-09-17 01:46:34
。net下,我先上页面代码如下,就是一个上传文件的页面

<!DOCTYPE html>
<script runat="server">
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim request As HttpRequest = System.Web.HttpContext.Current.Request
Dim FileCollect As HttpFileCollection = request.Files

If FileCollect.Count > 0 Then
Dim sqlString As String = "update T_O_Order set verifiednum=" + request("verifiedNum") + ",producenum=" + request("produceNum") + ","
Dim filename As String
Dim FileSave As HttpPostedFile = FileCollect(0)
filename = DateTime.Now.ToString("yyMMddHHmmssff")
If FileSave.FileName <> "" Then

filename += FileSave.FileName.Split("\")((FileSave.FileName.Split("\").Length - 1))
sqlString += " img='../../content/upimg/" & filename & "'"
FileSave.SaveAs(Server.MapPath("/Content/upImg/" & filename))
End If
sqlString += " where orderid=" & Session("orderid")
Dim conn As Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(transportation.Dao.BaseDao.ConnectionString)
conn.Open()
Dim cmd As Data.SqlClient.SqlCommand = New Data.SqlClient.SqlCommand(sqlString, conn)
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
transportation.Dao.BaseDao.writeLog(sqlString, "Null")
End Try
sqlString = "INSERT INTO t_log(type,oplog,optime,opid) VALUES(1,'" & "运输订单号‘" & Session("orderid") & "’的磅单" & filename & " 由司机‘" & Session("name") & "’上传" & "',CONVERT(varchar(100), GETDATE(), 20)," & Session("operatorid") & ")"
cmd = New Data.SqlClient.SqlCommand(sqlString, conn)
cmd.ExecuteNonQuery()
conn.Close()
End If
End Sub
Protected Sub LinkButton2_Click(sender As Object, e As EventArgs)
Response.Redirect("driverDetail.aspx?id=" & Session("orderid"))
'Response.Write("<script language=javascript>history.go(-2);<" & "/script>")
End Sub
</script>
<html>
<head>
<title>上传图片</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">

<meta content=”yes” name=”apple-mobile-web-app-capable” />
<meta content=”black” name=”apple-mobile-web-app-status-bar-style” />
<meta content="telephone=no,email=no" name="format-detection" />
<link rel="stylesheet" href="../content/style.css" media="screen" type="text/css" />
<script type="text/javascript" src="../Content/assets/js/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="../scripts/jquery.rotate.min.js"></script>
<script type="text/javascript">
function fileSelected() {
var file = document.getElementById('fileToUpload').files[0];
if (file) {
var fileSize = 0;
if (file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';

document.getElementById('fileName').innerHTML = '文件名: ' + file.name;
document.getElementById('fileSize').innerHTML = '文件大小: ' + fileSize;
document.getElementById('fileType').innerHTML = '文件类型: ' + file.type;
}
}

function uploadFile() {
var pNum = document.getElementById('produceNum').value;
var vNum = document.getElementById('verifiedNum').value;
if (pNum == "" || vNum == "")
{
alert('相关数量不能为空');
}
else
{
if (document.getElementById('fileToUpload').files[0] != null) {
var fd = new FormData();

alert(document.getElementById('fileToUpload').files[0]);

fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
fd.append("produceNum", document.getElementById('produceNum').value);
fd.append("verifiedNum", document.getElementById('verifiedNum').value);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "test.aspx");
xhr.send(fd);
location.href="driverdetail.aspx?id=<%=Session("orderid")%>";
}
else
{
alert('图片不能为空');

}
}
}

function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
}
else {
document.getElementById('progressNumber').innerHTML = 'unable to compute';
}
}

function uploadComplete(evt) {
alert("上传成功");
}

function uploadFailed(evt) {
alert("文件上传失败");
}

function uploadCanceled(evt) {
alert("文件上传取消");
}
</script>
</head>
<body>
<form id="form1" enctype="multipart/form-data" method="post" >

<div class="row">
<label for="fileToUpload">选择手机中的磅单图片</label><br /><br />
<input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
</div>
<div id="fileName"></div>
<div id="fileSize"></div>
<div id="fileType"></div>
<div class="row">
<br /><br />
<div>
出厂数量:<input type="text" name="produceNum" id="produceNum" Style="border: 0; border-bottom: 1px solid black; background: transparent" "><br />
验收数量:<input type="text" name="verifiedNum" id="verifiedNum" Style="border: 0; border-bottom: 1px solid black; background: transparent"><br /><br />
</div>
<input type="button" onclick="uploadFile()" value="确认交货" />
</div>
<br />
<div id="progressNumber"></div>
</form>
</body>
</html>




问题就是 在 IE 谷歌浏览器上面去执行那个uploadFile上传函数都可以 唯独Firefox上面 点执行过后就变成这样,如下图

请问要想兼容Firefox,这个应该怎么弄呢?
...全文
522 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
董健正 2019-01-25
  • 打赏
  • 举报
回复
可以看看我的处理方法https://mp.csdn.net/postedit/86638359
Squall001 2016-09-17
  • 打赏
  • 举报
回复
找到原因了

                    location.href="driverdetail.aspx?id=<%=Session("orderid")%>";
这一句 是xhr.send(fd);过后马上就执行跳转了,但是xhr.send(fd);是异步的,所以完全会可能文件没有传完就跳转,当然要报错,但是其他两个浏览器不报错我也不知道怎么回事。。。 总之 我把跳转改到回调函数里面,就不会出错了 代码如下,解决问题

        function uploadComplete(evt) {
            alert("上传成功");
            location.href="driverdetail.aspx?id=<%=Session("orderid")%>";
        }
 
        function uploadFailed(evt) {
            alert("文件上传失败");
            location.href="driverdetail.aspx?id=<%=Session("orderid")%>";
        }
 
        function uploadCanceled(evt) {
            alert("文件上传取消");
            location.href="driverdetail.aspx?id=<%=Session("orderid")%>";
        }

Squall001 2016-09-17
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
421是什么 还有哪个地方转string出错了
421那一行是人家写好的系统文件吧 不知道。。
Poopaye 2016-09-17
  • 打赏
  • 举报
回复
421是什么 还有哪个地方转string出错了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧