FileUpload无法赋值解决方案

FileUpload无法赋值解决方案

 

编写人:CC阿爸

 

2015-1-27

 

今天在这里,我想与大家一起分享如何处理fileupload控件不能赋值的问题。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。

 

相信大家在平时的asp.net开发项目中,肯定使用过fileupload控件。如下图

 

用户在上传完附档时,fileupload的地址栏会正常显示上传的路径,但是我们平时经常遇到页面刷新后,FileUpload之前选择的为空了,用户需要重新选择文件,很麻烦。另:上传完后,更新到数据,再加载画面时,地址栏又被清空了。

 

而且:出于安全的考虑,fileupload控件是不可赋值的。但我们可以采用其它方法来处理:

如:可增加一个textbox框,将fileupload的控件的宽度设置为0

 <td class="TableItem" ><asp:TextBox ID="txtFileName"  runat="server" />

<asp:FileUpload ID= " FileUpload " runat= " server "  Width= " 0px " />
</td>
<td  class= " TableItem " >
<asp:Button ID= " btnUpload " runat= " server " Text= " Upload "  class= " Button " OnClick= " btnUpload_Click " />
<asp:Button ID= " btnDownload " runat= " server " Text= " Download "  class= " Button " οnclick= " btnDownload_Click "  />
<asp:Button ID= " btnDelete " runat= " server " Text= " Delete "  class= " Button "  οnclick= " btnDelete_Click "  />

</td>                     

 

并在pageload中加入以下代码:

this.FileUpload.Attributes.Add( " onchange "" document.getElementById(' " + txtFileName.ClientID +  " ').value = this.value ");

FileUploadonchange事件中把选择的文件路径赋值给TextBox,这里的TextBox和宽度为0fileupload组合就变成了这个伪FileUpload,这里的TextBox可以随便赋值,页面刷新也不会清空.这样换一个思路,问题不就解决了。

 

 

欢迎加入技术分享群

 

转载于:https://www.cnblogs.com/bribe/p/4254906.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们在使用 FileUpload 组件上传文件时,如果文件名包含中文字符,那么就会出现乱码的问题。这是因为在上传过程中,浏览器会将文件名进行 URL 编码,而在服务器端接收到文件时,需要将文件名进行 URL 解码,如果解码方式不正确,就会出现乱码。 解决这个问题的方法是在服务器端对文件名进行 URL 解码。具体步骤如下: 1. 获取上传的文件名。 2. 对文件名进行 URL 解码,使用 java.net.URLDecoder 类的 decode() 方法进行解码。解码时需要指定正确的字符编码,通常情况下使用 UTF-8 编码即可。 ```java String fileName = URLDecoder.decode(fileItem.getName(), "UTF-8"); ``` 3. 使用解码后的文件名保存上传的文件。 完整代码示例: ```java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 创建文件上传组件 ServletFileUpload fileUpload = new ServletFileUpload(); // 解析请求,获取上传的文件列表 List<FileItem> fileItemList = fileUpload.parseRequest(request); // 遍历文件列表 for (FileItem fileItem : fileItemList) { // 如果是普通表单字段,直接输出字段名和字段值 if (fileItem.isFormField()) { System.out.println(fileItem.getFieldName() + ": " + fileItem.getString()); } else { // 如果是上传的文件 // 获取上传的文件名 String fileName = URLDecoder.decode(fileItem.getName(), "UTF-8"); // 使用解码后的文件名保存上传的文件 fileItem.write(new File("/path/to/save/" + fileName)); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值