我正在尝试从我的Android应用程序上传一个图像到rest服务器。图片确实上传了,但在服务器上,照片查看器或其他图片应用程序无法打开上传的图片。我在服务器上使用netbeans 7中的glassfish 3。我不使用maven,我更喜欢非Moven解决方案。
下面是我用来在一个运行程序中从android上传图片的代码
@Override
public void run() {
// TODO Auto-generated method stub
try{
HttpClient httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
Bitmap original = BitmapFactory.decodeFile(path);
ByteArrayOutputStream out = new ByteArrayOutputStream();
original.compress(Bitmap.CompressFormat.JPEG, 77, out);
byte[] data = out.toByteArray();
ByteArrayBody bab = new ByteArrayBody(data,"image.JPG");
MultipartEntityBuilder mpeb = MultipartEntityBuilder.create();
mpeb.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
mpeb.addBinaryBody("file", data, ContentType.create("image/jpg"), "image.jpeg");
HttpPost request = new HttpPost(url);
request.setEntity(mpeb.build());
request.addHeader("Content-type","multipart/form-data");
HttpResponse response = httpClient.execute(request,httpContext);
HttpEntity entity = response.getEntity();
if(response.getStatusLine().getStatusCode()== 201){
Log.w("ced", "pic success");
}else{
Log.w("ced", "pic failed ,code "+response.getStatusLine().getStatusCode());
}
}catch(Exception e){
Log.e("error",e.getMessage());
}
}
@POST
@Path("/imgs/")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response saveImage(@FormDataParam("file") InputStream is
){
try {
FileOutputStream os = new FileOutputStream(new File("C:/Users/files/Downloads/"+"img.jpg"));
Utils.copyFileStream(is, os);
os.flush();
os.close();
return Response.status(201).entity("reached").build();
} catch (FileNotFoundException ex) {
Logger.getLogger(RestW.class.getName()).log(Level.SEVERE, null, ex);
}catch(IOException e){
Logger.getLogger(RestW.class.getName()).log(Level.SEVERE, null, e);
}
return Response.status(500).entity("error").build();
}
我尝试在AddBinaryBody中将mime类型更改为multipart/form-data和multipart/*。尽管如此,图像还是无法打开。
当我添加另一个@FormDataParam()(用于内容处理)时,它显示以下错误:
Severe:缺少方法public javax.ws.rs.core.response的依赖关系Severe:method,public javax.ws.rs.core.response com.proj.test.restw.SaveImage(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition),用资源的POST注释,类com.proj.test.restw,不能被识别为有效的资源方法。
当我删除内容配置参数,它工作良好,但图像不能打开。
提前致谢
这是对我起作用的代码
private void sendPics(ArrayList<String> paths){
for(int i = 0;i<paths.size();i++){
String p = paths.get(i);
try{
Bitmap original = BitmapFactory.decodeFile(p);
ByteArrayOutputStream out = new ByteArrayOutputStream();
original.compress(Bitmap.CompressFormat.JPEG, 100, out);
byte[] data = out.toByteArray();
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(15000);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Cache-Control", "no-cache");
connection.setRequestProperty("Content-Type", "multipart/form-data");
DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
dataOutputStream.write(data);
dataOutputStream.flush();
dataOutputStream.close();
int c = connection.getResponseCode();
connection.disconnect();
}catch(Exception e){
Log.e("cedError",e.getMessage());
}
}
}
}
我的MainActivity代码在这里:
> //这是我的java代码,firebase部分仅在以下条件下工作正常(requestCode==102){br>//imageuri=data.getData(); imageuri;public static final int PICK\u IMAGE=1@重写受保护的void onCreate(Bundle savedInstanceState){super.onCreate(saved
我用python scrapy编写了一个脚本,从一个网站下载一些图片。当我运行我的脚本时,我可以在控制台中看到图像的链接(它们都是格式)。然而,当我打开下载完成时应该保存图像的文件夹时,我什么也没有看到。我犯错的地方? 这是我的蜘蛛(我正在从Sublime文本编辑器运行): 这是我在中为要保存的图像定义的内容: 为了让事情更清楚: 我希望保存图像的文件夹名为,我已将其放在项目下的文件夹中。 文件夹
问题内容: 我正在尝试将图像从Android Phone(HTC Desire HD)上传到FTP服务器(在我的本地PC上)。图像将发送到FTP服务器,但已损坏。 并且方法(ftpClient.storeFile())引发IOException(错误的文件号) 请帮我。 这是损坏的图像链接: http://imageshack.us/photo/my- images/820/komikb.jpg/
我有一个Android应用程序,它需要在一个循环中显示图像和视频,播放视频没有问题,但当它到达图像时,屏幕变为空白,什么也没有发生。程序仍在运行,只是没有显示。 我正在使用SurfaceView。setBackground()来绘制图像,因为在播放视频的ImageView和SurfaceView之间进行交换之前会导致问题。 我在显示视频时遇到了类似的问题,我通过删除等待视频准备的循环来解决它,因此
我在下载图像和更新ImageView时遇到问题,我正在使用ExecutorServices下载图像,但我面临的问题是,作为场景,我正在使用基本适配器在列表中显示Imageview。图像被下载,但这两个图像都只在firstImage View中更新。 所以位图在同一个imageView中得到了更新,有人遇到过类似的问题吗 例如,我正在下载2个图像,它正在创建2个ImageDownloader实例,所