相关疑难解决方法(0)

将数据URI转换为File然后附加到FormData

我一直在尝试重新实现像Mozilla Hacks网站上的 HTML5图像上传器,但它适用于WebKit浏览器.部分任务是从canvas对象中提取图像文件并将其附加到FormData对象以进行上载.

问题是虽然canvas具有toDataURL返回图像文件表示的函数,但FormData对象仅接受来自File API的 File或Blob对象.

Mozilla解决方案使用以下仅限Firefox的功能canvas:

var file = canvas.mozGetAsFile("foo.png");
Run Code Online (Sandbox Code Playgroud)

...在WebKit浏览器上不可用.我能想到的最好的解决方案是找到一种方法将数据URI转换为File对象,我认为它可能是File API的一部分,但我不能为我的生活找到一些东西.

可能吗?如果没有,任何替代方案?

谢谢.

javascript html5 webkit

270
推荐指数
11
解决办法
23万
查看次数

PHP - 获取base64 img字符串解码并保存为jpg(产生空图像)

嗨,我实际上是通过ajax将一个base64图像字符串发送到一个php脚本,它只解码字符串并将内容保存为.jpg文件.

但结果是空图像.

这怎么可能?

php脚本:

$uploadedPhotos = array('photo_1','photo_2','photo_3','photo_4');
            foreach ($uploadedPhotos as $file) {
                if($this->input->post('photo_1')){
                     $photoTemp = base64_decode($this->input->post('photo_1'));


                    /*Set name of the photo for show in the form*/
                    $this->session->set_userdata('upload_'.$file,'ant');
                    /*set time of the upload*/
                    if(!$this->session->userdata('uploading_on_datetime')){
                     $this->session->set_userdata('uploading_on_datetime',time());
                    }
                     $datetime_upload = $this->session->userdata('uploading_on_datetime',true);
                    /*create temp dir with time and user id*/
                    $new_dir = 'temp/user_'.$this->session->userdata('user_id',true).'_on_'.$datetime_upload.'/';
                    @mkdir($new_dir);
                    /*move uploaded file with new name*/
                    @file_put_contents( $new_dir.$file.'.jpg',$photoTemp);


            }
Run Code Online (Sandbox Code Playgroud)

对于ajax来说没关系因为,echo $ photoTemp返回字符串.

我试过var_dump(@file_put_contents( $new_dir.$file.'.jpg',$photoTemp));,它返回,bool(true)因为图像被保存但图像中没有内容:(空图像

对于空图像,我的意思是,文件是创建和命名的,它与我传递给php的内容大小相同,但是当我尝试打开该图像进行预览时,文件无法打开,因为文件损坏或损坏类型格式

无论如何这是将照片作为base64并将其发送到php的JS:

<script type="text/javascript">

var _min_width = 470;
var _min_height = 330; …
Run Code Online (Sandbox Code Playgroud)

php base64 codeigniter image save

15
推荐指数
3
解决办法
11万
查看次数

在 Node Js 中将 base64 图像转换为文件

我是 Node Js 的新手。我需要包含用户的个人资料图片。我从 IOS 应用程序收到 base64 图像请求。我需要将它存储在图像文件夹中并将图像路径保存在 mongodb 数据库中。

我使用了以下代码,

var bitmap = new Buffer(req.body.profile_image, 'base64');
// write buffer to file
fs.writeFileSync("images/example.jpg", bitmap);
Run Code Online (Sandbox Code Playgroud)

其中 req.body.profile_image 是 base64 图像。

我收到以下错误,

TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
Run Code Online (Sandbox Code Playgroud)

req.body.profile_image 值将是,

+MZScHeJQ9Cz5dfxnEmIMHWMZyZYnYx8Rrhj0HbtfGUanv5w3UHUyADbiGsKJxeM1yV4uGwBS7cYlAec1w0AX6xg2A1O854UF8OS6PAP1MtzkeFnrNlD41U8XFeGrp1fn3jRMUs8sqS61umSS2rR2NDhppjZ4OvnOWBAq6X+sQNkhKkfZOdYsZOpz8fWIQb6wQ/GchVCgfZko4PMDg1DSumausG6o+2E6wKLLjKReUaHEQXKJV8h85XEKN4p/WEBvTHmmJ/IN178YJVgrGmfOScAuBPp+sggGA7/wC1kgbDiacbGABOcCLHVRpMuBQh5Xn4xqARF03pwkJT23LhxGLiSGp8mCVWDrzPf3iwp4C3nDSg2VUfNwgDvm6vrIiFJvp8ZHIdjoFx8BX0OH0+8TVii3GAKKc2kjz7dYqUCdsuMOm2hrr+h//Z
Run Code Online (Sandbox Code Playgroud)

请帮忙。

javascript image mongodb node.js

5
推荐指数
1
解决办法
2万
查看次数

如何将表单数据中的缓冲区发送到SignServer?

我在内存中有一个文件(在缓冲区中),它在文件系统上不存在(所以我不能只传输它).

我正在尝试使用HTTP 将其发送到SignServer.

这是我尝试这样做的方式:

var formdata = require('form-data'); var form = new formdata();

form.append('workerName', 'PDFSigner');
form.append('data', file_buffer);
// or
// escape(file_buffer.toString('binary'))
// or
// file_buffer.toString('binary') (without escaping)

var request = form.submit('http://localhost:8080/signserver/process', function(err, res) {});
Run Code Online (Sandbox Code Playgroud)

当我尝试追加file_bufferSignServer时说它data是空的:

状态400 - 上载时缺少文件内容

当我尝试追加时escape(file_buffer.toString('binary'))(如在HTTP请求如何发送缓冲区中的建议),这是同一个故事.

当我尝试追加file_buffer.toString('binary')node.js崩溃说:

node:../ src/stream_base.cc:157 int node :: StreamBase :: Writev(const v8 :: FunctionCallbackInfo&):断言`(偏移)<=(storage_size)'失败.

中止(核心倾倒)

如何在Node.JS中通过HTTP(multipart/form-data)正确发送文件(缓冲区)?

multipartform-data form-data node.js

4
推荐指数
1
解决办法
4890
查看次数