怎样将配置本地服务器图片上传至服务器

404-页面不存在1、本地上传图片到服务器,由于重启服务器后图片将丢失,因此上传图片的时候我们把图片怎么存在本地上,然后重启服务器之后进行读取。
本地上传图片到服务器,由于重启服务器后图片将丢失,因此上传图片的时候我们怎么把图片存在本地上,然后重启服务器之后进行读取?
引用来自“混世顽童”的评论
你那意思是重新发布了吧,然后web容器下的文件都重置了,图片也丢失了吧。放在发布目录之外吧,然后自己写图片下载显示逻辑。或者动静分离,静态文件单独放在一个web服务里
正解,明显就是这个问题
上传到缓存目录了?
--- 共有 1 条评论 ---
“将”丢失是什么意思?服务器不保存图片?那还要上传干什么呢?
我假设服务器保存图片的,只是由于某些需要或者原因,重启后删除掉(或丢失)图片,那么解决思路应是这样的:
想要把图片保存在本地,直接操作肯定是不可以的(网页不能随便操纵本地文件),只能通过服务器传过来,作为本地缓存,可以设置过期时间长一点。
这样的话,流程就变成了:
1. 用户上传
2. 服务器保存完毕
3. 用户请求刚刚上传的这张图片(可以是偷偷的,不让用户知道,仅仅是为了解决缓存在本地的需要)
4. 用户把从服务器读取到的图片保存到本体某个目录下(也是静默操作)
5. cookie中(或者其他方式)记录保存在本地的图片的路径
6.&提示上传成功
当然这仅仅是单向的,服务器依然不能从本地获取图片,只能获取地址,
重启之后读取,只能是用户再次访问这个页面时尝试获取第4步保存的图片的地址(可能会有权限问题),或者重新静默上传到服务器
不知道还有没有其他更好的方法,目前我也只能想到这样的了
--- 共有 2 条评论 ---
:如果是故障,那就不是你担心的问题了,这属于运维的工作,你需要做的就是用户上传这个事件完整,数据正确。至于意外事故,那是另一套解决方案,不是code就能解决的问题。
因为要显示的话 图片的路径只能在服务器上面取,我的理解是如果服务器出现故障的话图片也就没了。。。
用Js 把图片转成 base64字符串,存储到本地缓存,几M都不是问题
--- 共有 1 条评论 ---
那访问的时候呢?
你应该想明白为什么重启的时候图片会丢失。你想想你到底存哪去了?
--- 共有 2 条评论 ---
: 我还是没明白你要表达的意思,服务器重启之后图片文件怎么会不见了?
因为以前做本地项目的时候都是把图片存在服务器的(如果不存在服务器上就不能正常访问图片),然后重新启动了服务器之后 里面的图片文件也就都不见了。
七牛满足你
你那意思是重新发布了吧,然后web容器下的文件都重置了,图片也丢失了吧。放在发布目录之外吧,然后自己写图片下载显示逻辑。或者动静分离,静态文件单独放在一个web服务里
为什么不弄一个图片服务器
上传时候,将上传的&base64 &保存到服务器log中,丢失后,利用文件比对的方式,重新转换保存已丢失的图片。。。保存到本地不可取,这种对用户要求太高了
专门用一个服务器,来存放图片吧!!或者在用户上传的同时,在服务器另一个地方做好备份!&>&&>&&>&&>&java中的上传图片例子,从本地上传到服务器上的例子。
java中的上传图片例子,从本地上传到服务器上的例子。
上传大小:293KB
java中的上传图片例子,从本地上传到服务器上的例子。
综合评分:3.8(46位用户评分)
所需积分:5
下载次数:194
审核通过送C币
创建者:id_rin
创建者:qq_
创建者:qq_
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
java中的上传图片例子,从本地上传到服务器上的例子。
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:> android中实现将图片上传到服务器的有关问题
android中实现将图片上传到服务器的有关问题
liucuiyu & &
发布时间: & &
浏览:1 & &
回复:0 & &
悬赏:0.0希赛币
android中实现将图片上传到服务器的问题
这是自己在练习做一个将图片上传到服务器端android应用时遇到的一些问题及一些常用的android代码的一些分享:我设计了两种方法,一种是通过照相机拍照上传一种是上传本地照片的方式,但是其核心的内容都是一致的!下面我就以上传本地图片来进行说明:1、首先是要从图库中选择图片,这个代码的格式比较固定:&&&&& Intent intent=new Intent();&&&& intent.setType(IMAGE_TYPE);
intent.setAction(Intent.ACTION_GET_CONTENT);//打开图像库
startActivityForResult(intent, 1);2、接下来就是选择图片时得到选择图片的路径: &&&&&&&&&& uri=data.getData();//获得图片的uri&&&&&&&
//bm=MediaStore.Images.Media.getBitmap(cr, uri); String[] proj={MediaStore.Images.Media.DATA}; //Cursor 是android.database包下的 Cursor cursor=managedQuery(uri, proj, null, null, null); int column_index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst();&&& //小心游标越界,要将其移动到前段&&&&&&&&&& path=cursor.getString(column_index);}3、接下来就是服务器端和客户端的设计了,首先是服务器端的设计:&& 我这里就列出核心的代码&&& //这是一个servlet中的service方法&&& protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
&& // System.out.println("out");&&&& request.setCharacterEncoding("utf-8");&&& String imagePath=request.getSession().getServletContext().getRealPath("/")+"image";//存放上传照片的路径&&&&
//System.out.println("image---"+imagePath);&&&& File dir=new File(imagePath);&&&&
if(!dir.exists()){&&&&
& dir.mkdirs();&&&&
}&&& DiskFileItemFactory dfi=new DiskFileItemFactory();//是commons包下的&&& ServletFileUpload sfu=new ServletFileUpload(dfi);&&&& sfu.setSizeMax(100*);&&&& //设置最大可以上传的文件大小为100M&&&&
try { && List &FileItem&items=sfu.parseRequest(request);
for(int i=0;i&items.size();i++){
& FileItem item=items.get(i);
& String imageName=""; &&&&&&&&&&& if(!item.isFormField()){
&&&& String fileName=item.getName();
imageName=fileName.substring(fileName.lastIndexOf("/")+1);
long size=item.getSize(); if((imageName==null||imageName.equals(""))&&size==0){
} int point =imageName.indexOf(".");&&&&&&&& imageName=(new Date()).getTime()+imageName.substring(point,imageName.length()); File imageUpload=new File(imagePath,imageName); item.write(imageUpload); }else{//取出不是文件域的所有表单信息 String fieldValue=item.getString();&& //如果包含中文应写为&& //String fieldValue=new String(item.getString().getBytes(),"utf-8");
System.out.println("imageName"+imageName);response.sendRedirect("index.jsp file="+imageName);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} &&& } }上面的代码显得有些乱但是核心的部分都已经记录下来!4、客户端的主要代码如下: String end = "\r\n";
String twoHyphens = "--";
String boundary = "*******";
DataOutputStream ds =
FileInputStream fis =
System.out.println("NativeMethod");
URL url = new URL(actionUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// 允许Input、output不适用Cache
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
/** 设置传送的method=post */
con.setRequestMethod("POST");
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "utf-8");
con.setRequestProperty("Content-type",
"multipart/form-boundary=" + boundary);
/** 设置dataOutputStream */
ds = new DataOutputStream(con.getOutputStream());
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disponsition: form- "
+ "name=\"file1\"; filenname=\"" + newName + "\"" + end);
ds.writeBytes(end);
// 取得文件的FileInputStream
fis = new FileInputStream(path);
/* 设置每次写入1024bytes */
byte[] buffer = new byte[1024];
int length = -1;
// 从文件读取数据至缓存区
while ((length = fis.read(buffer)) != -1) {
/* 将资料写入dataOutputStream */
ds.write(buffer, 0, length);
ds.writeBytes(end);
ds.writeBytes(twoHyphens + boundary + end);
ds.flush();
// 取得Response的内容
InputStream is = con.getInputStream();
StringBuffer b = new StringBuffer();
while ((ch = is.read()) != -1) {
b.append((char) ch);
System.out.println("toast part");
Toast.makeText(activity, b.toString() + "上传成功",
Toast.LENGTH_SHORT).show();
ds.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(activity, "图片上传失败!",
Toast.LENGTH_SHORT).show();
throw new RuntimeException(e);
} /*finally {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}*/ }这里我需要说明一下,这些代码也是在我参考别人写的代码的基础上修改过来的,希望可以和大家分享!!
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&客服电话:021-0/191
传真:021-
TM (C) . All Rights Reserved.
上海市闵行区万源路2158号(近宜山路)泓毅大厦709室
沪ICP备号-8
ISP-ICP:沪B2-}

我要回帖

更多关于 配置本地服务器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信