目的:带有参数上传图片

环境:客户端开发 android studio  ,服务器端:visual studio 2012 (c# asp.net)

************************************************************************

上传图片的时候遇到返回FileNotFoundException,但是一直在客户端报错

HttpURLConnection中connection.getInputStream()报错误FileNotFoundException

java.io.FileNotFoundException: http://192.168.11.6/appHandler/UploadHandler.ashx  (一直以为是找不到这个文件)

所以也一直在查找客户端的错误,换来换去,还是没有解决,都快疯掉了,放了一段时间,今天又重新来补充这一块的开发,慢慢调试,才发现如果在服务器端只接受参数,不处理图片与文件这一块,则会正常返回服务器消息,这才知道是服务器端出现问题了,下面把出问题的代码贴出来:

public string UploadVoiceFile(HttpContext context)
{
string FileName, FilePath;
HttpPostedFile ItemImageFile = context.Request.Files["Filedata"];
FileName = ItemImageFile.FileName.Substring(ItemImageFile.FileName.LastIndexOf("."));
//FileName = Guid.NewGuid().ToString().Substring(24) + DateTime.Now.ToShortDateString().Replace("/", "_") + file.FileName.Substring(file.FileName.LastIndexOf("."));
string FilePathStr = "/upload/voice/" + DateTime.Now.ToShortDateString().Replace("/", "") + "/";
FilePath = HttpContext.Current.Server.MapPath(@FilePathStr);
if (ItemImageFile != null)
{
//如果没有该目录则创建该上传目录
if (!Directory.Exists(FilePath)) //这一块就出现问题
{
Directory.CreateDirectory(FilePath);
}
if (ItemImageFile.ContentLength > ) // 图片大小不能超过2M
{
return "{\"result\": \"-1\",\"msg\":\"图片大小不能超过2M!\"}";
}
ItemImageFile.SaveAs(FilePath + FileName);
return "{\"result\": \"1\",\"msg\":\"" + FilePathStr + FileName + "\"}";
}
return "{\"result\": \"-1\",\"msg\":\"文件数据为空!\"}";
}

是创建不了目录,也不能正常保存文件,所以抛出FileNotFoundException,也就传回到客户端了,以为是找不到文件:http://192.168.11.6/appHandler/UploadHandler.ashx

网上也有朋友遇到过,说是重新建了一个工程就OK了,我这里通过服务器本地调试也是可以的,所以原因出现在 IIS文件权限这一块

找到要上传的文件目录,右键->安全 -》 添加 -> Everyone 用户,权限:完全控制  ,搞定!

汗颜啊,这一个小小的问题浪费了几天的开发时间,写在这里留作以后笔记,也供大家参考!

android 开发上传图片遇到返回 FileNotFoundException的更多相关文章

  1. Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结

    最近公司要开发android 所以研究了一下Xamarin  to android 中个GPS 废话不多说,说重点. 想获取手机上的gps信息必不可少的就是要使用 LocationManager Lo ...

  2. Android开发:getViewById返回null的原因定位

    近期在研究开发一些基于Android的App,遇到了一些问题.当中一个比較关键的是在Activity中的onCreate()方法中获取Button对象.代码大概例如以下: private Button ...

  3. 【Android开发笔记】返回上层Activity的正确打开方式

    技术支持 http://stackoverflow.com/questions/12276027/how-can-i-return-to-a-parent-activity-correctly 首先, ...

  4. Android应用开发按下返回键退向后台执行

    转载请注明来源:http://blog.csdn.net/kjunchen/article/details/50429694 Android应用开发按下返回键退向后台执行 我们日常使用的非常多Andr ...

  5. Java乔晓松-android中上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  6. Android开发学习清单

    目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...

  7. android开发之使用拼音搜索汉字

    国庆回了趟家,昨天真不想走,离家近的感觉太好.唉,不扯这些,说说今天的正事吧. 上篇博客中介绍了自定义AutoCompleteTextView ,但是用到了一个很蹩脚的技术,就是我们事先把每个汉字的拼 ...

  8. Android端上传图片到后台,存储到数据库中 详细代码

    首先点击头像弹出popwindow,点击相册,相机,调用手机自带的裁剪功能,然后异步任务类访问服务器,上传头像,保存到数据库中, 下面写出popwindow的代码 //设置popwindow publ ...

  9. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

随机推荐

  1. 尝试Hexo

    Hexo是没弄好,目前还只在GitHub上搭建了个框架,地址:https://lengdefengren.github.io/  或者lengdefengren.github.io 我测试Hexo已经 ...

  2. php 图片调整大小 封装类【转载】

    <?php class ImageResize { private $image; private $img_des; private $image_type; private $permiss ...

  3. MVC小例子

    [约定胜于配置] 1. 右键Mode数据层添加新建项,用linq连接数据库 (不要在控制层上直接操控linq,要在数据层新建一个类,来对数据库进行操作) 2. 右键Mode数据层添加类,来完成对数据库 ...

  4. iOS数据持久化-SQLite数据库使用详解

    使用SQLite数据库 创建数据库 创建数据库过程需要3个步骤: 1.使用sqlite3_open函数打开数据库: 2.使用sqlite3_exec函数执行Create Table语句,创建数据库表: ...

  5. .net 后台中对html标签按钮跳转后台以及后台简单验证

    ---------------------------------学霸,学神,大牛,hacker请绕道de分割线-------------------------------------------- ...

  6. 用NOPI将图片二进制流导出到Excel

    这儿采取的是将图片的二进制流导出到Excel,直接上代码: /// <summary> /// DataTable导出到Excel的MemoryStream /// </summar ...

  7. Codevs 1231 最优布线问题

    题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的.为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外 ...

  8. 一步一步学习C++

    根据<C++ primer>第五版 总结学习心得. 在实践中,不必全面地使用C++语言的各种特性,而应根据工程的实际情况,适当取舍(譬如动态类型信息,虚拟继承.异常等特性的使用,很值得商榷 ...

  9. 为什么ARM的frq中断的处理速度比较快

    FRQ向量位于异常向量表的最末端,不需要跳转就可以直接执行后面跟随的异常处理程序:FRQ模式中私有寄存器数量最多,在进行异常处理时不需要对这些寄存器进行压栈保存.

  10. VmodCam top verilog

    `timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...