Imageshack 上传和 wrong_file_type
Posted
技术标签:
【中文标题】Imageshack 上传和 wrong_file_type【英文标题】:Imageshack upload and wrong_file_type 【发布时间】:2011-08-26 22:16:34 【问题描述】:我正在尝试使用 flex 将图像上传到 imageshack,但不断收到
<links>
<error id="wrong_file_type">Wrong file type detected for file IMG_00000009.jpg:application/octet-stream</error>
</links>
我已尝试更改 mimetype,但似乎没有任何效果。
这是我的方法的样子:
protected function onUpload(event:MouseEvent):void
trace('uploading')
fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, completeHandler);
var params:URLVariables = new URLVariables();
params.key = key;
var request:URLRequest = new URLRequest("http://www.imageshack.us/upload_api.php");
request.method = URLRequestMethod.POST;
request.data = params;
fileRef.upload(request, "fileupload");
谁能在这里帮我一把,告诉我我做错了什么?我环顾了谷歌和这里,但在他的动作脚本中找不到任何解决方法。
提前致谢
【问题讨论】:
【参考方案1】:多部分表单上传有多种内容类型。一个用于主要提交,一个用于每个部分。使用 FileReference.upload() 方法时,您不能设置其中任何一个。可悲的是,您可能必须使用 imageshack 想要的内容类型构建自己的多部分表单上传。您可以使用 URLLoader 类执行此操作,但它并不美观。
这是一个可以帮助您入门的课程(可能您无需修改即可使用它):http://code.google.com/p/in-spirit/source/browse/#svn%2Ftrunk%2Fprojects%2FMultipartURLLoader%2Fru%2Finspirit
您也可以代表世界各地的 Flash 开发人员要求 imageshack 接受应用程序/八位字节流的图像。
您还可以在http://bugbase.adobe.com 提交错误/增强请求(该功能已记录为以这种方式工作,因此它更像是增强请求)。
【讨论】:
这正是我最终要做的,所以我将这个标记为正确的答案。关于我在这里所做的更多细节:***.com/questions/7298842/… 无论如何谢谢【参考方案2】:好吧,首先,您不会监听任何可能发生的错误(可能是这种情况),如果您想调试,您应该使用 chrome 中的开发人员面板或 firefox 中的 firebug 之类的东西查看 http 请求。
通过快速浏览 API,我看到了这个花絮:
支持的参数有:
文件上传; (input type="file") - 图片或视频文件。强制的 除非指定了 url 参数。 frm上传; (input type="file") - 视频默认帧图片。 可选,仅用于视频上传。当您上传视频时 您可以提供一个默认帧,当视频播放时将显示该帧 停了下来。此图像的尺寸应与视频文件的尺寸相同 以避免屏幕上出现伪影。 网址;该参数表示使用transload方式代替 上传 optsize;如果图像是,则以 WxH 形式调整图像的大小选项 上传/转载。对视频上传没有影响。 rembar;开发人员可以告诉 ImageShack 离开/删除 ImageShack 生成的缩略图上的信息栏。如果你有 将此参数提供为 yes 或 1 然后生成的 thumbmail 将 没有信息栏。对视频上传标签没有影响;一种 逗号分隔的标签列表添加到您的视频/图像。例如。 家庭,图片。可选 公开;您的视频/图片的公共/私人标记。是的意思 公共(默认),不意味着私有。可选 饼干;注册码,可选。 一个_用户名;用户名,可选。 a_password;密码,可选。 键;您的开发者密钥。必填项。
我相信您缺少 url
或 fileupload
参数以使其正常工作。
【讨论】:
没有发生错误,并且 xml 正在由 imageshack 返回,此外,我传递了文件上传,正如您在我的代码 sn-p 中看到的那样:fileRef.upload(request, "fileupload") ; 啊,我认为它在帖子中发送了错误的内容类型。默认情况下,FileReference 发送Content-Type: application/octet-stream
。您需要将其更改为 ImageShack 需要的任何内容(可能是图像?)。
这是我的问题,我似乎无法改变它。你能告诉我怎么做吗?谢谢
这很奇怪,因为这种内容类型应该适用于 imageshack。可悲的是,api 说For FileReference.upload(), the Content-Type of the request is set automatically to multipart/form-data, and the value of the contentType property is ignored.
。您唯一的选择是将 HTTPService.send 与所有参数和图像的字节数组一起使用。
不要认为你可以用 HTTPService 完成这个。能给我举个例子吗?以上是关于Imageshack 上传和 wrong_file_type的主要内容,如果未能解决你的问题,请参考以下文章
使用 cURL 将 PHP 文件上传到 imageshack
iOS - 使用 ImageShack JSON API 上传图片