asp.net fileupload 问题

zestsnake 2019-07-01 04:50:35
用fileupload 实现pdf上传,在点击upload ,选择文件, 再点“预览”按钮后 , 由于发生回发事件 ,fileload 保存
的路径信息会被清空 。如何避免这个问题?
...全文
1746 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zestsnake 2019-07-11
  • 打赏
  • 举报
回复
结贴给分结贴给分
  • 打赏
  • 举报
回复
下面是图片预览, 稍微改动下 就是 PDF预览了 <input id="upload_img" type="file" onchange="onUploadImgChange(this)" /> function onUploadImgChange(sender) { var filePath = sender.value; var fileExt = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(); if (!checkFileExt(fileExt)) { alert("您上传的文件不是图片,请重新上传!"); return; } var objpreview_wrapper = document.getElementById('preview_wrapper'); try { if (sender.files && sender.files[0]) { // Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径 objPreview是 img控件 objPreview.src = sender.files[0].getAsDataURL(); //读取图片文件大小 fileSize = sender.files[0].fileSize; checkFileSize(sender, fileSize); } else if (objpreview_wrapper.filters) { // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果 //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决 // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径 sender.select(); var imgSrc = document.selection.createRange().text; objpreview_wrapper.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc; } } catch (e) { alert("您上传的文件过大或者不是图片,请重新上传!"); } } function checkFileSize(sender, fileSize) { if (fileSize > 3145728) { alert("您上传的文件过大,请上传小于3M的图片!"); return false; } return true; } function checkFileExt(ext) { if (!ext.match(/.jpg|.gif|.png|.bmp/i)) { return false; } return true; }
  • 打赏
  • 举报
回复
这个得用JS 获取到 FILE 路径 在DIV 或者 另一个里面里打开, 觉得没问题上传, 有问题 重新操作。 这个要用前端, 用JS去搞定
  • 打赏
  • 举报
回复
设置浏览器的一个属性 叫什么允许获取上传文件地址 还是啥子的, 然后 filupload的 filename就带了路径
csdnFUCKINGSUCKS 2019-07-02
  • 打赏
  • 举报
回复

protected void BtnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.PostedFile != null && FileUpload1.PostedFile.ContentLength > 0)
    {
        string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower();
        if (ext != ".PDF" && ext != ".pdf")
        {

            //Common.ShowMessage.Show(Page, "error", "请选择PDF文件!");
            return;
        }
        string filename = "tmp" + ext;
        string path = "/pdftmp/" + filename;

        HfPath.Value = path;

        FileUpload1.PostedFile.SaveAs(Server.MapPath(path));
    }
}

<form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button Text="上传" runat="server" ID="BtnUpload" OnClick="BtnUpload_Click"/>
        <asp:Button Text="预览" runat="server" OnClientClick="return preview();"/>
        <asp:HiddenField ID="HfPath" runat="server" />
    </div>
</form>
<script>
    function preview() {
        var path = $('#<%=HfPath.ClientID%>').val();
        window.open('Scripts/PdfJs/web/viewer.html?file=' + path, '_blank', 'height=480,width=640,top=' + (window.screen.height - 150) / 2 + ',left=' + (window.screen.width - 300) / 2 + ', toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
        return false;
    }
</script>
ManBOyyy 2019-07-02
  • 打赏
  • 举报
回复
我是按照這個來的
http://www.cnblogs.com/insus/archive/2012/11/13/2768951.html
http://www.cnblogs.com/insus/archive/2012/11/14/2769650.html
http://www.cnblogs.com/insus/p/3785484.html
楠小南 2019-07-01
  • 打赏
  • 举报
回复
用异步吧
zestsnake 2019-07-01
  • 打赏
  • 举报
回复

//从控件上传文件
public void fileUpload()
{





if (fuPhoto.PostedFile != null && fuPhoto.PostedFile.ContentLength > 0)
{
string ext = System.IO.Path.GetExtension(fuPhoto.PostedFile.FileName).ToLower();
if (ext != ".PDF" && ext != ".pdf")
{

Common.ShowMessage.Show(Page, "error", "请选择PDF文件!");
return;
}




string filename = "tmp" + ext;
string path = "./pdftmp/" + filename;

Label101.Text = fuPhoto.PostedFile.FileName;
fuPhoto.PostedFile.SaveAs(Server.MapPath(path));


Response.Write("<script language=javascript>window.open('web/viewer.html?file=../pdftmp/tmp.pdf','_blank','height=480,width=640,top='+(window.screen.height-150)/2 + ',left=' + (window.screen.width-300)/2 + ', toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')</script>");

//Response.Redirect("web/viewer.html?file=../pdftmp/tmp.pdf") ;
//Response.Write("<script>window.open(web/viewer.html?file=../pdftmp/tmp.pdf'',''_blank'')</script>");
//Server.Transfer("XXX.aspx");
}
else
{
//do some thing;
}


}





protected void Button1_Click(object sender, EventArgs e)
{

fileUpload();
}





<asp:Button ID="Button1" runat="server" Text="预览" onclick="Button1_Click"
Width="45px" />
<asp:FileUpload ID="fuPhoto"
runat="server" ToolTip="选择文件" Width="264px" />



我的代码,当选择了文件,点预览,是可以预览到的,但这个时候触发了回发,所以fileupload被清了,再点预览就无法预览到了
zestsnake 2019-07-01
  • 打赏
  • 举报
回复
预览确认无误后,还要保存到数据库里的(路径信息)
zestsnake 2019-07-01
  • 打赏
  • 举报
回复
引用 5 楼 ManBOyyy 的回复:
[quote=引用 4 楼 zestsnake 的回复:]
[quote=引用 3 楼 f**kcsdn 的回复:]
自带的FileUpload没有预览功能
第三方的话看他预览的代码里做了什么操作 对应去修改


预览的话我用PDF.JS弹出一个新窗已经做好了,关键问题是要把路径信息保存在fileupload中,以便正式上传[/quote]
我之前也是fileupload用這個顯示圖片,發現也是和你一樣,無法保存路徑,可是一開始就保存在session是可以的啊,我也是保存在session的[/quote]

贴个代码看看呢。谢谢
  • 打赏
  • 举报
回复
浏览器不允许获取文件在客户端的物理路径,所以不可能展示路径给用户看,保存完后就是清空的
ManBOyyy 2019-07-01
  • 打赏
  • 举报
回复
引用 楼主 zestsnake 的回复:
用fileupload 实现pdf上传,在点击upload ,选择文件, 再点“预览”按钮后 , 由于发生回发事件 ,fileload 保存
的路径信息会被清空 。如何避免这个问题?

你是想保存絕對路徑還是相對路徑,截圖看看
ManBOyyy 2019-07-01
  • 打赏
  • 举报
回复
引用 4 楼 zestsnake 的回复:
[quote=引用 3 楼 f**kcsdn 的回复:]
自带的FileUpload没有预览功能
第三方的话看他预览的代码里做了什么操作 对应去修改


预览的话我用PDF.JS弹出一个新窗已经做好了,关键问题是要把路径信息保存在fileupload中,以便正式上传[/quote]
我之前也是fileupload用這個顯示圖片,發現也是和你一樣,無法保存路徑,可是一開始就保存在session是可以的啊,我也是保存在session的
zestsnake 2019-07-01
  • 打赏
  • 举报
回复
引用 3 楼 f**kcsdn 的回复:
自带的FileUpload没有预览功能
第三方的话看他预览的代码里做了什么操作 对应去修改


预览的话我用PDF.JS弹出一个新窗已经做好了,关键问题是要把路径信息保存在fileupload中,以便正式上传
csdnFUCKINGSUCKS 2019-07-01
  • 打赏
  • 举报
回复
自带的FileUpload没有预览功能 第三方的话看他预览的代码里做了什么操作 对应去修改
zestsnake 2019-07-01
  • 打赏
  • 举报
回复
引用 1 楼 独立观察员 的回复:
保存在 Session 中?


fileupload 好像不接受赋值的
独立观察员 2019-07-01
  • 打赏
  • 举报
回复
保存在 Session 中?

62,244

社区成员

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

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

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

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