代号一 - 上传图片到 Filestack
Codename One - upload pictures to Filestack
我想使用我的 CN1 应用程序将图片上传到 Filestack(以前的 Filepicker.io)。我正在使用他们的 REST API 来这样做。我正在使用 MultipartRequest class,在我 运行 应用程序之后,我可以在他们的网站上看到正在上传某些内容,因为文件的大小与拍摄的照片大小相同,但我看不到图片。
我的代码中是否缺少某些内容?
public void pictureUpload() {
String picture = Capture.capturePhoto(1024, -1);
if(picture!=null){
String filestack = "https://www.filestackapi.com/api/store/S3?key=MY_KEY&filename=myPicture.jpg";
MultipartRequest request = new MultipartRequest();
request.setUrl(filestack);
resquest.setPost(true);
request.setHttpMethod("POST");
try {
request.addData("i", picture, "image/jpeg");
request.setContentType("image/jpeg");
NetworkManager.getInstance().addToQueue(request);
} catch(IOException err) {
err.printStackTrace();
}
}
}
从他们的网站看这个:
curl -X POST -F fileUpload=@ada.jpg https://www.filestackapi.com/api/store/S3?key=Am3XXBhQ4SxiEQU7cLfM5z
{"url": "https://www.filestackapi.com/api/file/cTy7LpA6SfyG26Wzz7Rx", "size": 124928, "type": "image/jpg", "filename": "filename"}
看起来文件名不应该出现在上面的参数中:
public void pictureUpload(final Callback<String> resultURL) {
String picture = Capture.capturePhoto(1024, -1);
if(picture!=null){
String filestack = "https://www.filestackapi.com/api/store/S3?key=MY_KEY&filename=myPicture.jpg";
MultipartRequest request = new MultipartRequest() {
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map<String, Object> result = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
String url = (String)result.get("url");
if(url == null) {
resultURL.onError(null, null, 1, result.toString());
return;
}
resultURL.onSucess(url);
}
};
request.setUrl(filestack);
try {
request.addData("fileUpload", picture, "image/jpeg");
request.setFilename("fileUpload", "myPicture.jpg");
NetworkManager.getInstance().addToQueue(request);
} catch(IOException err) {
err.printStackTrace();
}
}
}
还删除了不必要的 setPost
和 post 方法,因为它们是默认值。
还添加了一些 JSON 结果解析以获得良好的度量和一些回调 URL 结果,因为这看起来是多部分 class.
的一个很好的例子
所以我已经将答案嵌入到 javadoc 中。
我想使用我的 CN1 应用程序将图片上传到 Filestack(以前的 Filepicker.io)。我正在使用他们的 REST API 来这样做。我正在使用 MultipartRequest class,在我 运行 应用程序之后,我可以在他们的网站上看到正在上传某些内容,因为文件的大小与拍摄的照片大小相同,但我看不到图片。
我的代码中是否缺少某些内容?
public void pictureUpload() {
String picture = Capture.capturePhoto(1024, -1);
if(picture!=null){
String filestack = "https://www.filestackapi.com/api/store/S3?key=MY_KEY&filename=myPicture.jpg";
MultipartRequest request = new MultipartRequest();
request.setUrl(filestack);
resquest.setPost(true);
request.setHttpMethod("POST");
try {
request.addData("i", picture, "image/jpeg");
request.setContentType("image/jpeg");
NetworkManager.getInstance().addToQueue(request);
} catch(IOException err) {
err.printStackTrace();
}
}
}
从他们的网站看这个:
curl -X POST -F fileUpload=@ada.jpg https://www.filestackapi.com/api/store/S3?key=Am3XXBhQ4SxiEQU7cLfM5z
{"url": "https://www.filestackapi.com/api/file/cTy7LpA6SfyG26Wzz7Rx", "size": 124928, "type": "image/jpg", "filename": "filename"}
看起来文件名不应该出现在上面的参数中:
public void pictureUpload(final Callback<String> resultURL) {
String picture = Capture.capturePhoto(1024, -1);
if(picture!=null){
String filestack = "https://www.filestackapi.com/api/store/S3?key=MY_KEY&filename=myPicture.jpg";
MultipartRequest request = new MultipartRequest() {
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map<String, Object> result = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
String url = (String)result.get("url");
if(url == null) {
resultURL.onError(null, null, 1, result.toString());
return;
}
resultURL.onSucess(url);
}
};
request.setUrl(filestack);
try {
request.addData("fileUpload", picture, "image/jpeg");
request.setFilename("fileUpload", "myPicture.jpg");
NetworkManager.getInstance().addToQueue(request);
} catch(IOException err) {
err.printStackTrace();
}
}
}
还删除了不必要的 setPost
和 post 方法,因为它们是默认值。
还添加了一些 JSON 结果解析以获得良好的度量和一些回调 URL 结果,因为这看起来是多部分 class.
的一个很好的例子所以我已经将答案嵌入到 javadoc 中。