2

我正在使用 Box.net 开发一个 Windows 商店应用程序。

我正在尝试使用 winRT 中的 backgrounduploader 上传文件,

代码片段:

    public async Task<UploadOperation> CreateUploadOperationV2(StorageFile file, string name, string destFolderId)
    {
        BackgroundUploader uploader = new BackgroundUploader();
        uploader.Method = "POST";
        uploader.SetRequestHeader("Authorization", "BoxAuth " + "api_key=" + mykey + "&auth_token=" + mytoken);
        var uploadUrl = "https://www.box.net/api/2.0/"+ "files/content";
        List<BackgroundTransferContentPart> parts = new List<BackgroundTransferContentPart>();
        var part = new BackgroundTransferContentPart("filename", name);
        part.SetFile(file);
        parts.Add(part);
        part = new BackgroundTransferContentPart("folder_id");
        part.SetText(destFolderId);
        parts.Add(part);
        var uploadOperation = await uploader.CreateUploadAsync(new Uri(uploadUrl), parts);
        return uploadOperation; 
    }

它适用于 ascii 编码的文件名,但不适用于其他文件名。

在标题中,它看起来像这样:

内容处置:表单数据;名称="文件名"; 文件名*=utf-8''Foo%E8%A4%87.jpg

有人可以帮我弄这个吗?

我被困在这里2天。

提前致谢!

4

1 回答 1

0

@seanhc,我有这个问题。并解决了,但我用的是java。可以帮助您:

String url = "https://api.box.com/2.0/files/content";
            HttpPost post = new HttpPost(url);
            MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8"));

            HtmlUtils.addEntity(entity, "folder_id", path.id);
            entity.addPart("filename", new CounterFileBody(post, file, onProgress, breakFlag));
            post.setEntity(entity);

            return BoxComHttpUtils.requestResponse(_storage, post, url);

开始工作正常,然后我将实体设置为:

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8"));

在这里找到解决方案

于 2012-12-25T22:28:19.983 回答